ПРИЛОЖЕНИЕ D Ошибки времени выполнения

На верх  Назад  Вперёд

Приложения, генерируемые при помощи Free Pascal, могут генерировать ошибки времени выполнения программы, если в программе обнаружено какое-либо ненормальное состояние. Ниже приведён список возможных ошибок времени выполнения и информация о причинах их возникновения.

Код

Ошибка

Описание

1

Invalid function number

Неправильный номер функции. Была попытка выполнить неправильный вызов операционной системы.

2

File not found

Файл не найден. Появляется при попытке удалить, переименовать или открыть несуществующий файл.

3

Path not found

Путь не найден. Возникает при обработке директорий, если путь не существует или неправильный. Также возникает при попытке доступа к несуществующему файлу.

4

Too many open files

Слишком много открытых файлов. Количество файлов, открытых в данный момент вашим процессом, превысило максимально допустимое. Некоторые операционные системы ограничивают количество файлов, которые могут быть открыты одновременно, и эта ошибка может случиться, если это ограничение было превышено.

5

File access denied

Отказано в доступе к файлу. Эта ошибка может произойти по одной из следующих причин:

Попытка открыть для записи файл с атрибутом «только чтение», или который находится в каталоге с атрибутом «только чтение».

Файл в текущий момент блокирован или используется другим процессом.

Попытка создать новый файл или директорию, в то время как файл или директория с таким именем уже существует.

Попытка прочитать файл, который был открыт в режиме «только запись».

Попытка записи в файл, который был открыт в режиме «только чтение».

Попытка удаления файла или директории, в то время как это невозможно.

Недостаточно прав для доступа к файлу или директории.

 

6

Invalid file handle

Неправильный дескриптор файла. Если появилось это сообщение, то используемая вами файловая переменная является «мусором». Это говорит о том, что ваша память содержит недостоверные данные.

12

Invalid file access code

Неправильный код доступа к файлу. Появляется, если reset или rewrite вызываются с неправильным значением FileMode.

15

Invalid drive number

Неправильный номер диска. Номер, полученный для функций Getdir или ChDir, указывает на несуществующий диск.

16

Cannot remove current directory

Невозможно удалить текущую директорию. Случается при попытке удалить текущую активную директорию.

17

Cannot rename across drives

Невозможно переименовать на разных дисках. Вы не можете переименовать файл, так как он заканчивается на другом диске или разделе диска.

100

Disk read error

Ошибка чтения диска. Ошибка происходит при чтении с диска. Обычно случается, если вы пытаетесь прочитать самый конец файла.

101

Disk write error

Ошибка записи диска. Случается, если диск заполнен, а вы пытаетесь записать на него данные.

102

File not assigned

Файл не назначен. Это происходит при вызове Reset, Rewrite, Append, Rename и Erase, если вы вызвали их с параметром, которому не назначен файл.

103

File not open

Файл не открыт. Случается при вызове следующих функций: Close, Read, Write, Seek, EOf, FilePos, FileSize, Flush, BlockRead и BlockWrite, если файл не открыт.

104

File not open for input

Файл не открыт для ввода. Случается при вызове следующих функций: Read, BlockRead, Eof, Eoln, SeekEof или SeekEoln, если файл не открыт с помощью Reset.

105

File not open for output

Файл не открыт для вывода. Случается при записи, если текстовый файл не открыт с помощью Rewrite.

106

Invalid numeric format

Неправильный числовой формат. Случается, если НЕ числовое значение читается из текстового файла, а ожидается числовое значение.

150

Disk is write-protected (Critical error)

Диск защищён от записи (критическая ошибка).

151

Bad drive request struct length (Critical error)

Неисправный привод (критическая ошибка).

152

Drive not ready (Critical error)

Диск не читается (критическая ошибка).

154

CRC error in data (Critical error)

Ошибка контрольных сумм в данных (критическая ошибка).

156

Disk seek error (Critical error)

Ошибка поиска по диску (критическая ошибка).

157

Unknown media type (Critical error)

Неизвестный тип медиа-привода (критическая ошибка).

158

Sector Not Found (Critical error)

Сектор не найден (критическая ошибка).

159

Printer out of paper (Critical error)

В принтере нет бумаги (критическая ошибка).

160

Device write fault (Critical error)

Ошибка записи на диск (критическая ошибка).

161

Device read fault (Critical error)

Ошибка чтения с диска (критическая ошибка).

162

Hardware failure (Critical error)

Неисправность аппаратного обеспечения (критическая ошибка).

200

Division by zero

Деление на ноль. Приложение пытается разделить число на ноль.

201

Range check error

Ошибка проверки диапазона. Если вы скомпилировали вашу программу с включенной проверкой диапазона, то вы можете получить эту ошибку в следующих случаях:

1.Попытка доступа к массиву с индексом, который выходит за пределы объявленного диапазона.

2.Попытка присвоить значение переменной, которое выходит за пределы её диапазона (например, перечисляемые типы).

 

202

Stack overflow error

Ошибка переполнения стека. Размер стека вырос за пределы максимально допустимого (в некоторых случаях уменьшение размера локальных переменных поможет избежать этой проблемы), или стек нарушен. Эта ошибка отображается только в том случае, если включена проверка стека.

203

Heap overflow error

Ошибка переполнения кучи. Размер кучи вырос за пределы границ. Это может случиться при попытке явного распределения памяти функциями New, GetMem или ReallocMem, или при создании экземпляра класса или объекта недостаточно памяти. Учтите, что по умолчанию Free Pascal предоставляет растущую кучу, то есть куча будет пытаться получить больше памяти, чем необходимо. Однако, если куча достигнет максимального размера, предоставленного операционной системой или аппаратным обеспечением, то случится эта ошибка.

204

Invalid pointer operation

Неправильная операция с указателем. Вы получите эту ошибку, если вызовете Dispose или Freemem с неправильным указателем (например, Nil).

205

Floating point overflow

Переполнение плавающей точки. Вы пытаетесь использовать или произвести слишком большое вещественное число.

206

Floating point underflow

Потеря значащих разрядов плавающей точки. Вы пытаетесь использовать или произвести слишком маленькое вещественное число.

207

Invalid floating point operation

Неправильная операция с плавающей точкой. Может случиться, если вы пытаетесь вычислить квадратный корень или логарифм отрицательного числа.

210

Object not initialized

Объект не инициализирован. Если компиляция выполнена с включенной проверкой диапазона, то программа вызовет эту ошибку, если вы вызвали виртуальный метод, не вызвав при этом конструктор объекта.

211

Call to abstract method

Вызов абстрактного метода. Ваша программа пытается выполнить абстрактный виртуальный метод. Абстрактные методы должны быть перегружаемыми, а вызываться должен перегруженный метод.

212

Stream registration error

Ошибка регистрации потока. Это случается, если неправильный тип зарегистрирован в модуле objects.

213

Collection index out of range

Индекс коллекции вне диапазона. Вы пытаетесь получить доступ к элементу коллекции с неправильным индексом (модуль objects).

214

Collection overflow error

Ошибка переполнения коллекции. Коллекция достигла максимального размера, а вы пытаетесь добавить новый элемент (модуль objects).

215

Arithmetic overflow error

Ошибка арифметического переполнения. Эта ошибка появляется, если результат арифметической операции выходит за пределы поддерживаемого диапазона. В отличие от Turbo Pascal, эта ошибка случается только для 32-разрядного или 64‑разрядного переполнения. Причиной тому является тот факт, что все числа преобразуются в 32-разрядные или 64-разрядные при выполнении арифметических операций.

216

General Protection fault

Общая ошибка защищённого режима. Приложение пытается получить доступ к недействительному пространству памяти. Это может быть вызвано несколькими проблемами:

1.Разыменование пустого указателя (nil).

2.Попытка доступа к памяти, которая находится за пределами доступной области (например, вызов move с неправильной длиной).

217

Unhandled exception occurred

Произошло необработанное исключение. Произошло исключение, но его обработчик не представлен. Модуль sysutils устанавливает обработчик исключений по умолчанию, который отлавливает все исключения и выполняет безопасный выход.

219

Invalid typecast

Неправильное преобразование типов. Появляется, когда выполняется неудачное преобразование типов для класса с использованием оператора as. Эта ошибка также появляется, если объект или класс преобразованы в неправильный класс или объект и вызывается виртуальный метод этого класса или объекта. Последняя ошибка может быть обнаружена только в том случае, если включена опция компилятора –CR.

222

Variant dispatch error

Ошибка организации варианта. Нет метода организации (dispatch) для вызова из варианта.

223

Variant array create

Создание вариантного массива. При создании вариантного массива возникла проблема. Обычно случается из-за нехватки памяти.

224

Variant is not an array

Вариант не является массивом. Эта ошибка случается, когда выполняется попытка совершить операцию с вариантным массивом над вариантом, который не является массивом.

225

Var Array Bounds check error

Ошибка проверки диапазона массива. Ошибка случается, если индекс вариантного массива вне границ.

227

Assertion failed error

Не AssertErrorProc процедурная переменная была установлена.

229

Safecall error check

Ошибка проверки безопасного вызова. Эта ошибка случается, если возникает проблема безопасного вызова, и нет доступного обработчика процедуры.

231

Exception stack corrupted

Исключение нарушения стека. Ошибка случается, если объект исключения найден, но недоступен.

232

Threads not supported

Потоки не поддерживаются. Менеджер потоков использует отдельный драйвер на некоторых операционных системах (например, Unix-ах). Модуль с этим драйвером должен быть указан в разделе uses программы, желательно как первый модуль (на unix это модуль cthreads).