ременные имеют значения соответственно 0 и NIL, никакого сообщения не выдается.
Создадим новый модуль с именем UsrE-xit, в интерфейсной части которого будет объявлена процедура UserExit. Эту процедуру может использовать любая программа для выдачи развернутой диагностики в момент аварийного завершения:
{=============} UNIT UsrExit; {=====^=========}
INTERFACE var
OldExit: Pointer; {Старое значение ExitProc} Procedure UserExit;
{Процедура выхода. Осуществляет печать диагностического
сообщения и завершает работу программы.} Function HexB(b: Byte): String;
{Перевод байта в 16-ричное представление} Function HexW(n: Word): String;
{Перевод слова в 16-ричное представление}
IMPLEMENTATION Procedure UserExit;
{Процедура выхода. Осуществляет печать диагностического
сообщения и завершает работу программы.} var
txt: String;
begin {UserExit}
ExitProc := OldExit; {Восстанавливаем работу
стандартной процедуры выхода}
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 :== 'Неизвестный модуль';