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}
|