Ошибки времени выполнения
type
str31 = string[31];
function ErrMeaning (ResultCode: Integer): str31; {----------------------------------------------------------} { Возвращает строковое значение по коду ошибки. } {----------------------------------------------------------} const NumOfEntries = 108; type ErrorEntry = record Code: Integer; Meaning: str31; end; ErrorMeaningsArray = array [1..NumOfEntries] of ErrorEntry; const MeaningsArray: ErrorMeaningsArray = {Ошибки DOS} ((Code: 1; Meaning: 'Неверный номер DOS-функции' {Invalid DOS function number}), (Code: 2; Meaning: 'Файл не найден' {File not found}), (Code: 3; Meaning: 'Путь не найден' {Path not found}), (Code: 4; Meaning: 'Слишком много открытых файлов' {Too many open files}), (Code: 5; Meaning: 'В доступе к файлу отказано' {File access denied}), (Code: 6; Meaning: 'Неверный дескриптор файла' {Invalid file handle}), (Code: 7; Meaning: 'Разрушены управляющие блоки памяти' {Memory control blocks destroyed}), (Code: 8; Meaning: 'Недостаточно памяти DOS' {Insufficient DOS memory}), (Code: 9; Meaning: 'Неверный адрес блока памяти' {Invalid memory block address}), (Code: 10; Meaning: 'Неверное окружение DOS' {Invalid DOS environment}), (Code: 11; Meaning: 'Неверный формат (DOS)' {Invalid format (DOS)}), (Code: 12; Meaning: 'Неверный код доступа к файлу' {Invalid file access code}), (Code: 13; Meaning: 'Неверные данные (DOS)' {Invalid data (DOS)}), (Code: 15; Meaning: 'Неверный номер устройства' {Invalid drive number}), (Code: 16; Meaning: 'Невозможно удалить текущую директорию' {Cannot remove current directory}), (Code: 17; Meaning: 'Невозможно переименовать драйвер' {Cannot rename across drives}), (Code: 18; Meaning: 'Файлов больше нет' {No more files}), (Code: 19; Meaning: 'Диск защищен от записи' {Disk write-protected}), (Code: 20; Meaning: 'Неизвестное устройство (DOS)' {Unknown unit (DOS)}), (Code: 21; Meaning: 'Устройство не готово' {Drive not ready}), (Code: 22; Meaning: 'Неизвестная команда DOS' {Unknown DOS command}), (Code: 23; Meaning: 'CRC-ошибка' {CRC error}), (Code: 24; Meaning: 'Плохой запрос длины структуры' {Bad request structure length}), (Code: 25; Meaning: 'Ошибка поиска' {Seek error}), (Code: 26; Meaning: 'Неизвестный тип носителя' {Unknown media type}), (Code: 27; Meaning: 'Сектор диска не найден' {Disk sector not found}), (Code: 28; Meaning: 'Недостаточно бумаги' {Out of paper}), (Code: 29; Meaning: 'Ошибка записи' {Write fault}), (Code: 30; Meaning: 'Ошибка чтения' {Read fault}), (Code: 31; Meaning: 'Общий сбой' {General failure}), (Code: 32; Meaning: 'Нарушение общего доступа к файлу' {File sharing violation}), (Code: 33; Meaning: 'Нарушение блокировки файла' {File lock violation}), (Code: 34; Meaning: 'Неверная смена диска' {Invalid disk change}), (Code: 35; Meaning: 'Управляющий блок файла недоступен' {File control block unavailable}), (Code: 36; Meaning: 'Переполнение разделяемого буфера' {Sharing buffer overflow}), (Code: 37; Meaning: 'Несовпадение кодовой страницы' {Code page mismatch}), (Code: 38; Meaning: 'Ошибка обработки EOF' {Error handling EOF}), (Code: 39; Meaning: 'Дескриптор диска полон' {Handle disk full}), (Code: 50; Meaning: 'Сетевой запрос не поддерживается' {Network request not supported}), (Code: 51; Meaning: 'Удаленный компьютер недоступен' {Remote computer not listening}), (Code: 52; Meaning: 'Дубликат имени в сети' {Duplicate name on network}), (Code: 53; Meaning: 'Сетевое имя не найдено' {Network name not found}), (Code: 54; Meaning: 'Сеть занята' {Network busy}), (Code: 55; Meaning: 'Сетевое устройство больше не существует' {Network device no longer exists}), (Code: 56; Meaning: 'Превышен лимит команды NetBIOS' {NetBIOS command limit exceeded}), (Code: 57; Meaning: 'Ошибка сетевого адаптера' {Network adaptor error}), (Code: 58; Meaning: 'Неверный сетевой ответ' {Incorrect network response}), (Code: 59; Meaning: 'Неожиданная ошибка сети' {Unexpected network error}), (Code: 60; Meaning: 'Несовместимый удаленный адаптер' {Incompatible remote adaptor}), (Code: 61; Meaning: 'Очередь на печать переполнена' {Print queue full}), (Code: 62; Meaning: 'Нет достаточного места для файла печати' {Not enough space for print file}), (Code: 63; Meaning: 'Файл печати удален' {Print file deleted}), (Code: 64; Meaning: 'Сетевое имя удалено' {Network name deleted}), (Code: 65; Meaning: 'Доступ запрещен' {Access denied}), (Code: 66; Meaning: 'Неверный тип сетевого устройства' {Network device type incorrect}), (Code: 67; Meaning: 'Сетевое имя не найдено' {Network name not found}), (Code: 68; Meaning: 'Превышен предел сетевого имени' {Network name limit exceeded}), (Code: 69; Meaning: 'Превышен предел сеансов NetBIOS' {NetBIOS session limit exceeded}), (Code: 70; Meaning: 'Временная пауза' {Temporarily paused}), (Code: 71; Meaning: 'Сетевой запрос не принят' {Network request not accepted}), (Code: 72; Meaning: 'Пауза переадресации печати/диска' {Print/disk redirection paused}), (Code: 80; Meaning: 'Файл уже существует' {File already exists}), (Code: 82; Meaning: 'Невозможно создать каталог' {Cannot make directory entry}), (Code: 83; Meaning: 'Ошибка прерывания 24' {Fail on interrupt 24}), (Code: 84; Meaning: 'Слишком много переадресаций' {Too many redirections}), (Code: 85; Meaning: 'Дубликат переадресации' {Duplicate redirection}), (Code: 86; Meaning: 'Неверный пароль' {Invalid password}), (Code: 87; Meaning: 'Неверный параметр' {Invalid parameter}), (Code: 88; Meaning: 'Ошибка данных сети' {Network data fault}), {Ошибки ввода/вывода (I/O errors)} (Code: 100; Meaning: 'Ошибка чтения диска' {Disk read error}), (Code: 101; Meaning: 'Ошибка записи диска' {Disk write error}), (Code: 102; Meaning: 'Файл не назначен' {File not assigned}), (Code: 103; Meaning: 'Файл не открыт' {File not open}), (Code: 104; Meaning: 'Не открыт файл для приема' {File not open for input}), (Code: 105; Meaning: 'Не открыт файл для выдачи' {File not open for output}), (Code: 106; Meaning: 'Неверный числовой формат' {Invalid numeric format}), {Критические ошибки (Только для реального или защищенного режима)} (Code: 150; Meaning: 'Диск защищен от записи' {Disk is write protected}), (Code: 151; Meaning: 'Неизвестное устройство' {Unknown unit}), (Code: 152; Meaning: 'Устройство не готово' {Drive not ready}), (Code: 153; Meaning: 'Неизвестная команда DOS' {Unknown DOS command}), (Code: 154; Meaning: 'Ошибка CRC в данных' {CRC error in data}), (Code: 155; Meaning: 'Плохой запрос длины структуры устройства' {Bad drive request struct length}), (Code: 156; Meaning: 'Ошибка позиционирования диска' {Disk seek error}), (Code: 157; Meaning: 'Неизвестный тип носителя' {Unknown media type}), (Code: 158; Meaning: 'Сектор не найден' {Sector not found}), (Code: 159; Meaning: 'Недостаточно бумаги в принтере' {Printer out of paper}), (Code: 160; Meaning: 'Ошибка записи устройства' {Device write fault}), (Code: 161; Meaning: 'Ошибка чтения устройства' {Device read fault}), (Code: 162; Meaning: 'Аппаратный сбой' {Hardware failure}), {Фатальные ошибки} (Code: 200; Meaning: 'Деление на ноль' {Division by zero}), (Code: 201; Meaning: 'Ошибка проверки диапазона' {Range check error}), (Code: 202; Meaning: 'Ошибка переполнения стека' {Stack overflow error}), (Code: 203; Meaning: 'Ошибка переполнения кучи' {Heap overflow error}), (Code: 204; Meaning: 'Неверная операция с указателем' {Invalid pointer operation}), (Code: 205; Meaning: 'Переполнение числа с плавающей точкой' {Floating point overflow}), (Code: 206; Meaning: 'Потеря значимости числа с плавающей точкой' {Floating point underflow}), (Code: 207; Meaning: 'Неверная операция с числом с плавающей точкой' {Invalid floating pt. operation}), (Code: 208; Meaning: 'Не установлен оверлей-менеджер' {Overlay manager not installed}), (Code: 209; Meaning: 'Ошибка чтения оверлей-файла' {Overlay file read error}), (Code: 210; Meaning: 'Объект не инициализирован' {Object not initialised}), (Code: 211; Meaning: 'Вызов абстрактного метода' {Call to abstract method}), (Code: 212; Meaning: 'Ошибка регистрации потока' {Stream registration error}), (Code: 213; Meaning: 'Индекс TCollection вышел за границы диапазона' {TCollection index out of range}), (Code: 214; Meaning: 'Ошибка переполнения TCollection' {TCollection overflow error}), (Code: 215; Meaning: 'Ошибка арифметического переполнения' {Arithmetic overflow error}), (Code: 216; Meaning: 'Общая ошибка защиты' {General Protection Fault}), (Code: 217; Meaning: 'Необработанное исключение' {Unhandled exception}), (Code: 219; Meaning: 'Неверное приведение типа' {Invalid typecast})); var Low, High, Mid, Diff: Integer; begin Low := 1; High := NumOfEntries; while Low <= High do begin Mid := (Low + High) div 2; Diff := MeaningsArray[Mid].Code - ResultCode; if Diff < 0 then Low := Mid + 1 else if Diff > 0 then High := Mid - 1 else begin {нашли это} ErrMeaning := MeaningsArray[Mid].Meaning; Exit; {ErrMeaning} end; end; {while} ErrMeaning := 'Ошибка ' + IntToStr(ResultCode) + ' (неизвестное значение)'; end; {ErrMeaning} |
...я привожу несколько. Они все взяты из 'Delphi Developers Guide' (руководство Delphi-разработчика) авторов Pacheco и Teixeira. > type > str31 = string[31]; > > function ErrMeaning (ResultCode: Integer): str31; > {----------------------------------------------------------------} > { Возвращает строковое значение по коду ошибки. } > {----------------------------------------------------------------} > const > NumOfEntries = 48; > type > ErrorEntry = record > Code: Integer; > Meaning: str31; > end; > ErrorMeaningsArray = array [1..NumOfEntries] of ErrorEntry; > const > MeaningsArray: ErrorMeaningsArray = > {DOS errors} > ((Code: 1; Meaning: 'Неправильный номер функции DOS' {Invalid DOS function number}), > (Code: 2; Meaning: 'Файл не найден' {File not found}), > (Code: 3; Meaning: 'Путь не найден' {Path not found}), > (Code: 4; Meaning: 'Слишком много открытых файлов' {Too many open files}), > (Code: 5; Meaning: 'Доступ к файлу запрещен' {File access denied}), > (Code: 6; Meaning: 'Неверный дескриптор файла' {Invalid file handle}), 7 Разрушены управляющие блоки памяти (Memory Control Blocks Destroyed) 8 Недостаточно памяти (Insufficient memory (NFI)) 9 Неверный адрес блока памяти (Invalid Memory Block Address) 10 Неверная среда (Invalid Environment) 11 Неверный формат (Invalid format) > (Code: 12; Meaning: 'Неверный код доступа к файлу' {Invalid file access code}), 13 Неверные данные {Invalid Data} 14 Зарезервировано {Reserved} > (Code: 15; Meaning: 'Неверный номер устройства' {Invalid drive number}), > (Code: 16; Meaning: 'Невозможно удалить текущую директорию' {Cannot remove current directory}), > (Code: 17; Meaning: 'Невозможно переименовать драйвер' {Cannot rename across drives}), > (Code: 18; Meaning: 'файлов больше нет' {No more files}), 19 Диск защищен от записи {Disk write protected} 20 Неизвестное устройство {Unknown unit} 21 Устройство не готово {Drive not ready} 22 Неизвестная команда {Unknown command} 23 Ошибка CRC {CRC error} 24 Плохой запрос длины структуры {Bad request Structure Length} 25 Ошибка поиска {Seek Error} 26 Неизвестный тип носителя {Unknown media type} 27 Сектор не найден {Sector not found} 28 Недостаточно бумаги {Out of paper} 29 Ошибка записи {Write fault} 30 Ошибка чтения {Read Fault} 31 Общий сбой {General Failure} 32 Нарушение общего доступа {Sharing violation} 33 Нарушение блокировки {Lock violation} 34 Неверная смена диска {Invalid Disk Change} 35 FCB недоступно {FCB unavailable} 36 Переполнение буфера общего доступа {Sharing buffer overflow} 37 Несовпадение кодовой страницы {Code page mismatch} 38 Ошибка обработки EOF (конца файла) {Error handling EOF} 39 Обработка переполнения диска ?? {Handle disk full ??} 40..49 Зарезервировано {Reserved} (Code :50 ; Meaning : 'Сетевой запрос не поддерживается' {Network request not supported}), (Code :51 ; Meaning : 'Удаленный компьютер недоступен' {Remote computer not listening}), (Code :52 ; Meaning : 'Дубликат имени в сети' {Duplicate name on network}), (Code :53 ; Meaning : 'Сетевое имя не найдено' {Network name not found}), (Code :54 ; Meaning : 'Сеть занята' {Network busy}), (Code :55 ; Meaning : 'Сетевое устройство больше не существует' {Network device no longer exists}), (Code :56 ; Meaning : 'Превышен лимит команды NetBIOS' {NETBIOS command limit exceeded}), (Code :57 ; Meaning : 'Ошибка сетевого адаптера' {Network adapter error}), (Code :58 ; Meaning : 'Неверный сетевой ответ' {Incorrect network response}), (Code :59 ; Meaning : 'Неожиданная ошибка сети' {Unexpected network error}), (Code :60 ; Meaning : 'Несовместимый сетевой адаптер' {Incompatible remote adapter}), (Code :61 ; Meaning : 'Очередь на печать переполнена' {Print queue full}), (Code :62 ; Meaning : 'Нет достаточного места для файла печати' {Not enough space for print file}), (Code :63 ; Meaning : 'Файл печати удален' {Print file deleted}), (Code :64 ; Meaning : 'Сетевое имя удалено' {Network name deleted}), (Code :65 ; Meaning : 'Доступ запрещен' {Access denied}), (Code :66 ; Meaning : 'Неверный тип сетевого устройства' {Network device type incorrect}), (Code :67 ; Meaning : 'Сетевое имя не найдено' {Network name not found}), (Code :68 ; Meaning : 'Превышен предел сетевого имени' {Network name limit exceeded}), (Code :69 ; Meaning : 'Превышен предел сеансов NETBIOS' {NETBIOS session limit exceeded}), (Code :70 ; Meaning : 'Временная пауза' {Temporarily paused}), (Code :71 ; Meaning : 'Сетевой запрос не принят' {Network request not accepted}), (Code :72 ; Meaning : 'Печать или дисковая переадресация приостановлена' {Print or disk redirection is paused}), (Code :73..79; Meaning : 'Зарезервировано' {Reserved}), (Code :80 ; Meaning : 'Файл уже существует' {File already exists}), (Code :81 ; Meaning : 'Зарезервировано' {Reserved}), (Code :82 ; Meaning : 'Невозможно создать каталог' {Cannot make directory entry}), (Code :83 ; Meaning : 'Ошибка прерывания 24' {Fail on Interrupt 24}), (Code :84 ; Meaning : 'Cлишком много переадресаций' {Too many redirections}), (Code :85 ; Meaning : 'Дубликат переадресации' {Duplicate redirection}), (Code :86 ; Meaning : 'Неверный пароль' {Invalid password}), (Code :87 ; Meaning : 'Неверный параметр {Invalid parameter}), (Code :88 ; Meaning : 'Ошибка данных сети' {Network data fault}), >{Ошибки ввода/вывода (I/O errors)} > (Code: 100; Meaning: 'Ошибка чтения диска' {Disk read error}), > (Code: 101; Meaning: 'Ошибка записи диска' {Disk write error}), > (Code: 102; Meaning: 'Файл не назначен' {File not assigned}), > (Code: 103; Meaning: 'Файл не открыт' {File not open}), > (Code: 104; Meaning: 'Не открыт файл для приема' {File not open for input}), > (Code: 105; Meaning: 'Не открыт файл для выдачи' {File not open for output}), > (Code: 106; Meaning: 'Неверный числовой формат' {Invalid numeric format}), >{Критические ошибки (Только для реального или защищенного режима)} ({Critical errors (Real or proteted mode only)}) > (Code: 150; Meaning: 'Диск защищен от записи' {Disk is write protected}), > (Code: 151; Meaning: 'Неизвестное устройство' {Unknown unit}), > (Code: 152; Meaning: 'Устройство не готово' {Drive not ready}), > (Code: 153; Meaning: 'Неизвестная команда DOS' {Unknown DOS command}), > (Code: 154; Meaning: 'Ошибка CRC в данных' {CRC error in data}), > (Code: 155; Meaning: 'Плохой запрос длины структуры устройства' {Bad drive request struct length}), > (Code: 156; Meaning: 'Ошибка позиционирования диска' {Disk seek error}), > (Code: 157; Meaning: 'Неизвестный тип носителя' {Unknown media type}), > (Code: 158; Meaning: 'Сектор не найден' {Sector not found}), > (Code: 159; Meaning: 'Недостаточно бумаги в принтере' {Printer out of paper}), > (Code: 160; Meaning: 'Ошибка записи устройства' {Device write fault}), > (Code: 161; Meaning: 'Ошибка чтения устройства' {Device read fault}), > (Code: 162; Meaning: 'Аппаратный сбой' {Hardware failure}), > {Фатальные ошибки (Fatal errors)} > (Code: 200; Meaning: 'Деление на ноль' {Division by zero}), > (Code: 201; Meaning: 'Ошибка проверки диапазона' {Range check error}), > (Code: 202; Meaning: 'Ошибка переполнения стека' {Stack overflow error}), > (Code: 203; Meaning: 'Ошибка переполнения кучи' {Heap overflow error}), > (Code: 204; Meaning: 'Неверная операция с указателем' {Invalid pointer operation}), > (Code: 205; Meaning: 'Переполнение числа с плавающей точкой' {Floating point overflow}), > (Code: 206; Meaning: 'Потеря значимости числа с плавающей точкой' {Floating point underflow}), > (Code: 207; Meaning: 'Неверная операция с числом с плавающей точкой' {Invalid floating pt. operation}), > (Code: 208; Meaning: 'Не установлен оверлей-менеджер' {Overlay manager not installed}), > (Code: 209; Meaning: 'Ошибка чтения оверлей-файла' {Overlay file read error}), > (Code: 210; Meaning: 'Объект не инициализирован' {Object not initialised}), > (Code: 211; Meaning: 'Вызов абстрактного метода' {Call to abstract method}), > (Code: 212; Meaning: 'Ошибка регистрации потока' {Stream registration error}), > (Code: 213; Meaning: 'Индекс TCollection вышел за границы диапазона' {TCollection index out of range}), > (Code: 214; Meaning: 'Ошибка переполнения TCollection' {TCollection overflow error}), > (Code: 215; Meaning: 'Ошибка арифметического переполнения' {Arithmetic overflow error}), > (Code: 216; Meaning: 'Общая ошибка защиты' {General Protection Fault})); 217 Необработанное исключение (Unhandled Exception) 219 Неверное приведение типа (Invalid typecast) > var > i: Integer; > begin > for i := 1 to NumOfEntries do > if MeaningsArray[i].Code < ResultCode then > Continue {до следующей итерации цикла FOR loop} > else > begin > if MeaningsArray[i].Code = ResultCode then > begin > ErrMeaning := MeaningsArray[i].Meaning; > Exit; {ErrMeaning} > end > else {Code in array > ResultCode} > Break; {выход из цикла FOR} > end; > ErrMeaning := 'Ошибка ' + IntToStr(ResultCode) + > ' (неизвестное значение)'; > end; {ErrMeaning} [001797]