When there’s a will, there’s a way
201 : range error
215 : overflow checking when doing computation with integer
202 : overflow stack
106 : invalid numeric format
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
15 : invalid drive number
16 : cannot remove current directory
17 : cannot rename across
18 : no more files
100 : disk read error
101 : disk write error
102 : file not assigned
103 : file not open
104 : file not open for input
105 : file not open for output
150 : disk is write protected
151 : bad drive request structure length
152 : drive not ready
154 : CRC error in data
156 : disk seek error
157 : unknown media type
158 : sector not found
159 : printer out of paper
160 : device write fault
161 : device read fault
162 : hardware failure
200 : div by zero
203 : heap overflow
204 : invalid pointer operation
205 : floating point overflow
206 : floating point underflow
207 : invalid floating point operation
208 : overlay manager not installed
209 : overlay file read error
210 : object not initialized
211 : call to abstract method
212 : stream registration error
213 : collection index out of range
214 : collection overflow error
216 : general protection fault
217 : invalid operation code
227 : assertion failed
300 : file IO error
301 : non-matched array bounds
302 : non-local procedure pointer
303 : procedure pointer out of scope
304 : function not implemented
305 : breakpoint error
306 : break by ctrl/c
307 : break by ctrl/break
308 : break by other process
309 : no floating point coprocessor
310 : invalid variant type operation
Share this:
Like this:
18 thoughts on “ FREE PASCAL EXITCODE / RUNTIME ERROR CODE ”
how about 0 exitcode?
haven’t found it yet, I’ll post it as soon as I find out
how to fixing it?
Usually you need to read through your code again or debug to get the error. The runtime error code just gives a clearer explanation of what’s going wrong
Hi, I’m trying to create an array with >1000 compartments on a side. It appears I need to call cmem to use c’s memory manager. i included the code “uses cmem;” and it compiled in freepascal, but when i ran it it gave me the error “runtime error 3 at $0040eadd.” where is the location $0040eadd and how can i fix this? thanks!
làm thế nào để chữa lỗi exit code 201 vậy
cứ Debug để tìm chỗ sai rồi sửa từ từ thôi
how to fix the 2nd error code?
what abouth exitcode 215
what about the exit code -1073741571
how do you fix the 216 exit code
How to fix 215 exitcode ? Thank you
Maybe you can take a look on your Mathematic computation and check if the variables inside the equation needs larger data type.
can anyone help me with the following program? There is no compile message, but during the runtime, an error is occured, and the message is, exited with exitcode=217. What seems to be the problem?
The text that the program reads is like this
Where 3 is n for instance, so the procedure the program must be done 3 times, so as all the nums., will be read.

1 Answer 1
You will get exitcode 217 if the file named textfile.txt does not exist in the same directory as the executable.
will read the file into n , up to the end-of-line. Then it will get stuck. You nedd a readLN to read the newline.
Similarly, write(n); will write n to the console, but there will be no newline; you need writeln(n); to add a newline.
It’s not clear quite exacly what your file-structure is. Spaces are har to see. If you use readln(f,n); then n will contain the content of the line read — and if you want to detect an empty line, then you need until n=»; — no space between the quotes.
Since you don’t supply seekEoln with a paramater, it works on the keyboard, not the file. You need seekEoln(f) to find the end-of-line in the file.
Keep plugging away — you’ll get there. I’d suggest you remove your seekEoln s and take great care over whether you want to read an entire line (readln) or just a character (read)
2.1. МЕХАНИЗМ ОБРАБОТКИ ИСКЛЮЧИТЕЛЬНЫХ СИТУАЦИЙ
Для обработки исключительных ситуаций в Турбо Паскале предусмотрены соответствующие средства: в стандартный модуль System включена переменная ExitProc, с помощью которой можно перехватить управление программой в момент возникновения исключительной ситуации. По умолчанию эта переменная (она имеет тип Pointer) хранит значение NIL; если поместить в нее адрес некоторой процедуры пользователя (назовем ее процедурой выхода), то при возникновении исключительной ситуации управление передается в эту процедуру. Процедура выхода должна быть процедурой без параметров. Ее следует транслировать в расчете на дальнюю модель памяти.
Проиллюстрируем сказанное на примере простейшей процедуры выхода. Пусть ее задачей является только расшифровка стандартного сообщения Турбо Паскаля. Это сообщение имеет вид
Runtime error nnn at xxxx:yyyy,
где nnn — код (номер) ошибкИг -хххх: уууу — адрес той инструкции в коде программы, при выполнении которой возникла исключительная ситуация. Код ошибки и адрес ее возникновения хранятся в переменных ExitCode и ErrorAddr модуля System. Если в момент завершения программы эти пе
ременные имеют значения соответственно 0 и NIL, никакого сообщения не выдается.
Создадим новый модуль с именем UsrE-xit, в интерфейсной части которого будет объявлена процедура UserExit. Эту процедуру может использовать любая программа для выдачи развернутой диагностики в момент аварийного завершения:
OldExit: Pointer; Procedure UserExit;
сообщения и завершает работу программы.> Function HexB(b: Byte): String;
Function HexW(n: Word): String;
IMPLEMENTATION Procedure UserExit;
сообщения и завершает работу программы.> var
стандартной процедуры выхода>
WriteLn (‘Ошибка при выполнении программы’);
case ExitCode of
1: txt := ‘Неверный номер функции’;
2: txt := ‘He найден файл’;
3: txt := ‘He найден путь’;
4: txt := ‘Слишком много открытых файлов’;
5: txt ^ ‘Отказано в доступе к файлу’;
6: txt := ‘Недопустимый файловый дескриптор’;
12: txt := ‘Недопустимый код доступа к файлу’;
15: txt := ‘Недопустимый номер дисковода’;
16: txt := «Нельзя удалить текущий каталог’;
17: txt := ‘Нельзя указывать разные дисководы’;
100: txt := ‘Ошибка чтения с диска’;
101: txt := ‘Ошибка записи на диск’;
102: txt := ‘Файлу не присвоено имя’;
103: txt := ‘Файл не открыт’;
104: txt := ‘Файл не открыт для ввода’;
105: txt := ‘Файл не открыт для вывода’;
106: txt := ‘Неверный числовой формат’;
150: txt := ‘Диск защищен от записи’;
151: txt :== ‘Неизвестный модуль’;
152: txt := ‘Не готов диск’;
153: txt := ‘Неопознанная команда’;
154: txt := ‘Ошибка в исходных данных’;
155: txt := ‘Неверная длина структуры’;
156: txt := ‘Ошибка установки головок на диске’;
157: txt := ‘Неизвестный тип носителя’;
158: txt := ‘He найден сектор’;
159: txt := ‘Кончилась бумага на принтере’;
160: txt := ‘Ошибка при записи на устройство’;
161: txt := ‘Ошибка при чтении с устройства’;
162: txt := ‘Сбой аппаратуры’;
200: txt := ‘Деление на ноль’;
201: txt := ‘Ошибка при проверке границ’;
202: txt := ‘Переполнение стека’;
203: txt := ‘Переполнение кучи’;
204: txt := ‘Недействительная операция с указателем’;
205: txt := ‘Переполнение при операции с пл.зпт.’;
206: txt := ‘Исчезновение порядка при операции ‘+ ‘с плавающей запятой.’;
207: txt := ‘Недопустимая операция с плавающей запятой’;
208: txt := ‘He инициирован оверлей’;
209: txt := ‘Ошибка чтения оверлейного файла’
else txt := ‘Ошибка N’+Str(ExitCode);
WriteLn(txt,’ по адресу ‘,
Function HexB(b: Byte): String;
Function HexW(n: Word): String;
Обратите внимание: процедуру UserExit вовсе не обязательно объявлять дальней (с помощью зарезервированного слова Far), т.к. любая подпро
грамма, объявленная в интерфейсной части модуля, автоматически транслируется в расчете на дальнюю модель памяти.
В процедуре UserExit используется глобальная переменная OldExit. В нее программа пользователя должна поместить первоначальное значение переменной ExitProc, чтобы осуществились все необходимые стандартные действия, связанные с завершением работы программы. Для вывода адреса ошибочного оператора содержимое переменной ErrorAddr преобразуется в 16—ричный формат с помощью функции HexW. Такое преобразование может использоваться в программе пользователя и для других целей, поэтому функция HexW и вспомогательная функция НехВ также объявлены в интерфейсной части модуля.
Использование процедуры UserExit проиллюстрируем следующей
¦ Пример использования процедуры UserExit
OldExit := ExitProc; ExitProc := @UserExit; repeat
ReadLn(x,y); (Вводим операнды>
ExitProc := OldExit end.
В этой программе вводятся два произвольных вещественных числа и находится частное от деления первого на второе. Программа повторяет эти действия до тех пор, пока частное не станет равным нулю, или пока не возникнет исключительная ситуация. Последнее возможно в операторе
если будет нарушен требуемый формат задания вещественных чисел (например, в записи числа будет указан недопустимый символ), или в операторе
если делитель равен нулю.
Если Вы решите использовать подобную процедуру в Вашей программе, не забудьте восстановить стандартное значение NIL в переменной ExitProc перед завершением ее работы, в противном случае возможно «зависание» программы со всеми вытекающими отсюда последствиями.

(с)Все права защищены
По всем интересующим вопросам прошу писать на электронный адрес