Советы по Delphi

Ошибки времени выполнения


    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]



Содержание раздела