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);
end; {case}
WriteLn(txt,' по адресу ',
HexW(seg(ErrorAddr^)),':',HexW(ofs(ErrorAddr"))) ;
ExitCode := 0;
ErrorAddr := NIL end; /UserExit} ^——————————————————J
Function HexB(b: Byte): String;
{Перевод байта в 16-ричное представление} const ^
HD: array [O..15] of Char = ('0','1','2','3','4','5','6', '7','8','9','A','B",'C','D','E','F');
begin {HexB}
HexB := HD[b shr 4]+HD[b and $F] end; {HexB} _•—__——_————————————_
Function HexW(n: Word): String;
{Перевод слова в 16-ричное представление} begin {HexW}
HexW := HexB(Hi(n))+HexB(Lo(n)) end; {HexW} end. {Unit UsrExit}
Обратите внимание: процедуру UserExit вовсе не обязательно объявлять дальней (с помощью зарезервированного слова Far), т.к. любая подпро—