Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы алгоритмизации и программирования

.pdf
Скачиваний:
0
Добавлен:
29.11.2025
Размер:
3.02 Mб
Скачать

 

 

Продолжение табл. П 2.1

 

 

 

1

2

3

157

Cannot add or substract relo-

С перемещаемыми идентификатора-

 

catable symbols

ми в операнде Ассемблера допуска-

 

(Сложение или вычитание

ется выполнение единственной опе-

 

перемещаемых символов

рации – сложения с константой или

 

невозможно)

вычитания константы. Переменные,

 

 

процедуры, функции и метки пред-

 

 

ставляют собой перемещаемые

 

 

идентификаторы. Предположим,

 

 

что Var – это переменная, a Const

 

 

константа. Тогда инструкции

 

 

Mov AX,Const+Const и Mov AX,

 

 

Var+Const являются допустимыми,

 

 

a Mov AX,Var+Var – нет

158

Invalid register combination

Допустимымикомбинациямииндекс-

 

(Недопустимая регистровая

ных регистров являются [ВХ], [ВР],

 

комбинация)

[SI], [DI], [BX+SI], [BX+DI], [BP+SI]

 

 

и [BP+DI]. Другая комбинация ин-

 

 

дексных регистров (например, [AX],

 

 

[BP+BX] и[SI+DX]), недопускается.

 

 

Заметим, что локальные переменные

 

 

(переменные, описанные в процеду-

 

 

ре или функции) размещаются в сте-

 

 

ке, идоступкниморганизуетсячерез

 

 

регистр ВР. При ссылках на такие

 

 

переменные Ассемблер автоматиче-

 

 

ски добавляет [ВР], поэтому, хотя

 

 

конструкция типа Local [BX] (где

 

 

Local — локальная переменная) и

 

 

выглядит допустимой, операндом в

 

 

итоге будет Local [BP+BX]

159

286/287 Instructions not

Следует использовать директиву

 

allowed

компилятора {$G+}, имея в виду, что

 

(Инструкции процессоров

результирующий код не сможет ра-

 

286/287 не разрешены)

ботать на машинах с процессорами

 

 

8086 и 8088

 

 

81

 

 

Окончание табл. П 2.1

 

 

 

1

2

3

160

Invalid symbol reference

Данный идентификатор в операнде

 

(Недопустимая ссылка на

Ассемблера недоступен. Ошибка мо-

 

идентификатор)

жет появиться no следующим при-

 

 

чинам:

 

 

Вы пытались обратиться к стан-

 

 

дартной процедуре, стандартной

 

 

функцииилиспециальныммассивам

 

 

Меm, MemW, MemL, Port, PortW

 

 

Вы обратились к строковой, веще-

 

 

ственной константе в операторе

 

 

ассемблерной команды

 

 

в операнде Ассемблера Вы пыта-

 

 

лись обратиться к процедуре или

 

 

функции типа Inline

 

 

Вы пытались получить с помощью

 

 

операции ©Result доступ к резуль-

 

 

тату, возвращаемому функцией

 

 

Вы пытались использовать корот-

 

 

кую инструкцию команды JMP, ко-

 

 

торая выполняет переход не на мет-

 

 

ку, a на что-то другое

161

Code generation error

Ошибка возникает, в частности, при

 

(Ошибка генерации кода)

компиляции ассемблерных фрагмен-

 

 

тов, содержащих команды Loqpne,

 

 

Loope, Loop или JCXZ, если коман-

 

 

да ссылается на недоступную метку

162

ASM expected

 

 

(Ожидается ключевое слово

 

 

ASM)

 

163

Duplicate dynamic method

Индекс динамического метода уже

 

index

использован другим динамическим

 

(Дублирование индекса ди-

методом. Возможно, Вы пытались

 

намического метода)

переопределитьдинамическийметод,

 

 

но ошиблись в имени, введя таким

 

 

образом новый метод

82

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

Таблица П 2.2

Ошибки ввода-вывода (код 1-199)

Коды

 

 

оши-

Вид сообщения

Смысл сообщения

бок

 

 

1

2

3

1

Invalid function number

Обращение к несуществующей

 

(Ошибочныйномер функции)

функции DOS

2

File not found

Ошибка генерируется процедурами

 

(He найден файл)

Reset, Append, Rename или Erase,

 

 

если физический файл, связанный с

 

 

файловой переменной, не найден

 

 

или не существует

3

Path not found

Ошибка генерируется процедурами

 

(Путь не найден)

Reset, Append, Rename или Erase,

 

 

если имя, присвоенное файловой пе-

 

 

ременной, является недействитель-

 

 

ным или указывает на несуществую-

 

 

щий подкаталог. Ошибка генериру-

 

 

ется процедурами ChDir, MkDir или

 

 

RmDir, если маршрут является не-

 

 

действительным или указывает на

 

 

несуществующий подкаталог

4

Too many open files

Ошибка генерируется процедурами

 

(Слишком много открытых

Reset, Rewrite или Append, если

 

файлов)

программа имеет слишком много

 

 

открытых файлов. Операционная

 

 

система DOS не позволяет исполь-

 

 

зовать более 15 открытых файлов

 

 

для каждого процесса. Если вы по-

 

 

лучилиэтуошибкуприналичииме-

 

 

нее15 открытых файлов, надо увели-

 

 

читьчислов параметреFiles=xx фай-

 

 

лаConfig.sys до какого-либоподхо-

 

 

дящего значения, например, до 30

 

 

83

 

 

Продолжение табл. П 2.2

 

 

 

1

2

3

5

File access denied

Появление этого сообщения возмож-

 

(Отказано в доступе к файлу)

но no следующим причинам:

 

 

Данная ошибка генерируется про-

 

 

цедурой Reset или Append, если пе-

 

 

ременнаяFileMode допускаетзапись,

 

 

в товремя как физический файл яв-

 

 

ляется каталогом или файлом, дос-

 

 

тупным только для чтения

 

 

Данная ошибка генерируется про-

 

 

цедурой Rewrite, если каталог за-

 

 

полнен или если имя, присвоенное

 

 

файловой переменной, задает ката-

 

 

лог или существующий файл, дос-

 

 

тупный только для чтения

 

 

Данная ошибка генерируется про-

 

 

цедурой Rename, если имя, присво-

 

 

енное файловой переменной, совпа-

 

 

дает с именем каталога или если но-

 

 

вое имя указывает на уже сущест-

 

 

вующий файл

 

 

Данная ошибка генерируется про-

 

 

цедурой Erase при попытке стереть

 

 

каталог или файл, доступный только

 

 

для чтения

 

 

Данная ошибка генерируется про-

 

 

цедуройMkDir, еслифайлстемже

 

 

именем ужесуществуетвпорождаю-

 

 

щемкаталоге, еслинетместавпоро-

 

 

ждающемкаталоге илиеслизаданное

 

 

имяявляетсяименем устройства

 

 

Эта ошибка генерируется проце-

 

 

дурой RmDir, если каталог не явля-

 

 

ется пустым, если указанный путь

 

 

не определяет каталог или если путь

 

 

задает корневой каталог

 

 

Данная ошибка генерируется про-

 

 

цедурой Read или BlockRead при

 

 

попытке считать данные из файла,

 

 

который еще не открыт для чтения

 

 

Эта ошибка генерируется проце-

 

 

дурой Write или BlockWrite при

 

 

попытке записать данные в файл,

 

 

который еще не открыт для записи

84

 

 

Продолжение табл. П 2.2

 

 

 

1

2

3

6

Invalid file handle

Данная ошибка генерируется, если

 

(Недопустимый описатель

системному вызову DOS передается

 

файла)

недопустимый описатель файла.

 

 

Появление данной ошибки является

 

 

свидетельством того, что файловая

 

 

переменная испорчена

7

Not enough memory

 

 

(Недостаточно памяти для

 

 

запуска программы)

 

12

Invalid file access code

Ошибка генерируется процедурами

 

(Неверный код доступа к

Reset или Append при попытке от-

 

файлам)

крытьфайл(типизированный илине-

 

 

типизированный), еслизначениепе-

 

 

ременнойFileMode вмомент откры-

 

 

тияфайлабыло недействительным

15

Invalid drive number

Ошибка генерируется процедурой

 

(Недопустимый номер диска)

GetDir или ChDir, если номер дис-

 

 

ка недопустим

16

Cannot remove current

Ошибка генерируется процедурой

 

directory

RmDir при попытке удалить теку-

 

(Нельзя удалить текущий

щий каталог

 

каталог)

 

17

Cannot rename across drives

Ошибка генерируется процедурой

 

(Нельзя при переименовании

Rename, если оба файла не находят-

 

указывать разные диски)

ся на одном и томже диске

18

No more files

Этаошибкапередается впеременную

 

(Больше нет файлов)

Doserror модулейDOS иWinDOS,

 

 

ес-липривызовепроцедур FindFirst

 

 

и FindNext ненайденофайлов сза-

 

 

данным именем и набороматрибутов

100

Disk read error

Ошибка генерируется процедурой

 

(Ошибка чтения диска)

Read при попытке осуществить счи-

 

 

тывание после конца типизирован-

 

 

ного файла

101

Disk write error

Ошибка генерируется процедурами

 

(Ошибка записи на диск)

Close, Write, Writeln, Flush, если на

 

 

диске нет свободного места

 

 

85

 

 

Продолжение табл. П 2.2

 

 

 

1

2

3

102

File not assigned

Ошибка генерируется процедурами

 

(Файл не связан)

Reset, Rewrite, Append, Rename и

 

 

Erase, если с файловой переменной

 

 

не было связано имя физического

 

 

файла посредством обращения к

 

 

процедуре Assing

103

File not open

Ошибка генерируется процедурами

 

(Файл не открыт)

Close, Read, Write, Seek, Eof, FilePos,

 

 

FileSize, Flush, BlockRead или

 

 

BlockWrite при попытке осущест-

 

 

вить операции ввода-вывода с фай-

 

 

лом, который еще не открыт

104

File not open for input

Ошибка генерируется процедурами

 

(Файл не открыт для ввода)

Read, Readln, Eof, Eoln, SeekEof

 

 

или SeekEoln, если текстовый файл

 

 

не открыт для чтения

105

File not open for output

Ошибка генерируется процедурами

 

(Файл не открыт для вывода)

Write, Writeln, если текстовый

 

 

файл не открыт для записи

106

Invalid numeric format

Ошибка генерируется процедурами

 

(Недопустимый числовой

Read илиReadln, есличисловоезна-

 

формат)

чение, считанное изтекстового фай-

 

 

ла, несоответствуетчисловомуфор-

 

 

матусоответствующего типаданных

150

Disk is write-protected

 

 

(Диск защищен or записи)

 

151

Bad drive request structure

 

 

length

 

 

(Неправильная длина струк-

 

 

туры запроса дисковода)

 

152

Drive not ready

 

 

(Дисковод не готов)

 

153

Unknown command

 

 

(Неизвестная команда)

 

154

CRC error in data

 

 

(Ошибка контроля данных)

 

155

Bad drive request structure

 

 

length

 

 

(Приобращениикдискууказа-

 

 

наневернаядлинаструктуры)

 

86

Окончание табл. П 2.2

1

2

3

156Disk seek error

(Ошибка при поиске дорожки диска)

157Unknown media type (Неизвестный тип носителя)

158Sector not found (Сектор не найден)

159Printer out of paper (Принтер без бумаги)

160Device write fault (Неисправное устройство записи)

161Device read fault (Неисправное устройство чтения)

162Hardware failure

(Сбой аппаратных средств)

Таблица П 2.3 Фатальные ошибки* (код 200-255)

 

 

 

Код

Вид сообщения

Смысл сообщения

оши-

бок

 

 

1

2

3

200

Division by zero

В программе при операции деления

 

(Деление на нуль)

Mod или Div предпринимается по-

 

 

пытка разделить число на 0

201

Range check error

Ошибка генерируется процедурами-

 

(Ошибка при проверке

операторами, скомпилированными в

 

границ)

режиме {$R+}, при возникновении

 

 

одной из следующих ситуаций:

 

 

индексное выражение квалифика-

 

 

тора массива находилось вне допус-

 

 

тимого интервала значений

 

 

была осуществлена попытка при-

 

 

своить переменной значение, нахо-

 

 

дящееся вне допустимого интервала

 

 

была осуществлена попытка пере-

 

 

дать значение, находящееся вне до-

 

 

пустимого интервала, в качестве па-

 

 

раметра процедуре или функции

* Фатальные ошибки приводят к немедленному завершению программы.

87

 

 

Продолжение табл. П 2.3

 

 

 

1

2

3

202

Stack overflow error

Эта ошибка генерируется на входе в

 

(Переполнение стека)

процедуру или функцию, скомпили-

 

 

рованные в режиме {$S+}, если нет

 

 

достаточнойобластидляразмещения

 

 

локальных переменных подпрограм-

 

 

мы. Следует увеличить размер сте-

 

 

ка, используя директиву компилято-

 

 

ра . Данная ошибка может также

 

 

вызываться циклической рекурсией

 

 

или процедурой на Ассемблере, ко-

 

 

торая не поддерживает стек

203

Heap overflow error

Эта ошибка генерируется процеду-

 

(Переполнение динамически

рами New или GetMem, если нет

 

распределяемой области

достаточного свободного объема

 

памяти)

динамической области памяти, что-

 

 

бы выделить память для блока тре-

 

 

буемого размера

204

Invalid pointer operation

Эта ошибка генерируется процеду-

 

(Недействительная операция

рами Dispose или FreeMem, если их

 

с указателем)

аргумент имеет значение Nil, ука-

 

 

зывает на адрес, лежащий за преде-

 

 

лами динамически распределяемой

 

 

области, или если список свободных

 

 

блоков переполнен

205

Floating point overflow

Выполнение операции с плавающей

 

(Переполнение при операции

точкой привело к переполнению

 

с плавающей точкой)

 

206

Floating point underflow

Операция с плавающей точкой при-

 

(Исчезновение порядка при

вела к исчезновению порядка (поте-

 

операции с плавающей

ря значимости). Эта ошибка генери-

 

точкой)

руется, если использовать математи-

 

 

ческийсопроцессор8087 с управляю-

 

 

щим словом, которое демаскирует

 

 

ошибки, возникающие при исчезно-

 

 

вении порядка. По умолчанию исчез-

 

 

новение порядка приводит к возвра-

 

 

щению результата, равного нулю

88

 

 

Продолжение табл. П 2.3

 

 

 

1

2

3

207 Invalid floating point operation

Эта ошибка может появиться no сле-

 

(Недопустимая операция с

дующим причинам:

 

вещественным числом)

вещественное значение, переда-

 

 

ваемое функции Trunc или Round,

 

 

не может быть преобразовано в це-

 

 

лое число, находящееся внутри до-

 

 

пустимого предела типа Longlnt

 

 

(oт -2147483648 до 2147483647)

 

 

аргумент, предаваемый функции

 

 

Sqrt, отрицательный

 

 

аргумент, передаваемый функции

 

 

ln, равен нулю или имеет отрица-

 

 

тельное значение

 

 

произошло переполнение стека

 

 

сопроцессора 80x87

208Overlay manager not installed (Не установлена подсистема управления оверлеями)

209Overlay file read error (Ошибка при чтении оверлейного файла)

210

Object not initialized

Попытка обратиться к виртуальному

 

(Объект не инициализирован)

методу объекта до того, как он ини-

 

 

циализируется с помощью вызова

 

 

конструктора

211 Call to abstract method

Данная ошибка генерируется проце-

 

(Вызов неопределенного

дурой Abstract и указывает на то,

 

метода)

что программа пытается выполнить

 

 

ранеенеопределенный(абстрактный)

 

 

виртуальный метод. Когда объект-

 

 

ный тип содержит один или более

 

 

абстрактных методов, он называется

 

 

абстрактным объектным типом

212

Stream registration error

Данная ошибка генерируется про-

 

(Ошибкарегистрации потока)

цедурой RegisterType и указывает,

 

 

что произошла одна из следующих

 

 

ошибок:

 

 

Запись регистрации потока не на-

 

 

ходится в текущем сегменте данных

 

 

Поле obj-типа записи регистрации

 

 

потока является нулевым

 

 

Тип уже зарегистрирован

 

 

Уже зарегистрирован другой тип с

 

 

тем же obj-типом

 

 

89

 

 

Окончание табл. П 2.3

 

 

 

1

2

3

213

Collection overflow error

Индекс, передаваемый методу

 

(Ошибка переполнения кол-

TCollection, выходит за границы

 

лекции)

допустимого диапазона

214

Collection overflow error

Данная ошибка выдается TCollection

 

(Ошибка переполнения кол-

при попытке добавить элемент, когда

 

лекции)

набор переполнен

215

Arithmetic overflow error

Ошибка возникает при использова-

 

(Ошибка при выполнении

нии директивы {$Q+}, если при опе-

 

математической операции)

рациисцелочисленнымитипамидан-

 

 

ных произошло переполнение, – на-

 

 

пример, результат операции превы-

 

 

сил допустимый диапазон значений

90