Иллюстрированный самоучитель по Turbo Pascal

Сообщения об ошибках периода компиляции

146 File access denied (Отказано в доступе к файлу).

Возможные причины:

  • Вы пытаетесь использовать файл с атрибутом "только для чтения" в качестве выводного файла;
  • Вы используете имя каталога вместо имени выводного файла.

147 Object type expected (Здесь должен быть тип OBJECT).

Этот идентификатор должен принадлежать к типу OBJECT.

148 Local object types are not allowed (Нельзя объявлять локальные объекты).

Нельзя объявить объект в процедуре (функции).

149 VIRTUAL expected (Пропущено слово VIRTUAL).

150 Method identifier expected (Пропущен идентификатор инкапсулированного правила).

151 Virtual constructor are not allowed (Конструктор не может быть виртуальным).

153 Destructor identifier expected (Пропущен идентификатор деструктора).

154 Fail only allowed within constructor (Обращение к стандартной процедуре FAIL может содержаться только в конструкторе).

155 Invalid combination of opcode and operands (Недопустимая комбинация кода команды и операндов).

Код ассемблерной команды не может иметь такие операнды. Причины ошибки:

  • указано слишком много или слишком мало операндов для данной команды, например, INC AX, BX или MOV AX;
  • количество операндов правильное, но их типы или порядок следования не соответствуют данной команде, например, DEC 1, MOV AX, CL или MOV 1,AX.

156 Memory reference expected (Отсутствует адрес).

Операнд ассемблерной команды не содержит адрес. Вероятно, Вы забыли выделить квадратными скобками индексный регистр, например, MOV АХ, BX+SI вместо MOV АХ, [BX+SI].

157 Cannot add or subtract relocatable symbols (Нельзя складывать или вычитать перемещаемые символы).

В ассемблерных выражениях обоими операндами в операциях сложения или вычитания могут быть только ссылки на константу. Идентификаторы переменных, процедур, функций и меток являются перемещаемыми символами и не могут использоваться в качестве двух операндов одновременно в таких операциях. Если VAR – идентификатор переменной, a CONST – константы, то предложения MOV AX, CONST+CONST и MOVE AX, VAR+CONST будут правильными, в то время как выражение MOV AX, VAR+VAR недопустимо.

158 Invalid register combination (Недопустимая комбинация регистров).

Допустимыми комбинациями индексных регистров являются [ВХ], [BpJ, [SI], [DI], [BX+SI], [BX+DI], [BP+SI] и [BP+DI]. Другие комбинации (например, [АХ], [BP+BX], [SI+DX]) недопустимы. Заметим, что локальные переменные размещаются в стеке и доступ к ним организуется через регистр ВР. Ассемблер автоматически добавляет [ВР] в ссылках на такие переменные, поэтому в операндах типа LOCAL [ВХ], где LOCAL – локальная переменная, образуется недопустимая ссылка LOCAL[BP+BX].

159 286/287 instructions are not enabled (Недоступен набор команд микропроцессоров 286/287).

Используйте директиву {$G+}, но учтите, что такую программу можно исполнять только на ПК, оснащенных микропроцессором Intel 80286/80287 или более поздним.

160 Invalid symbol reference (Недопустимая ссылка на символ).

К указанному символу нельзя обратиться в ассемблерной программе. Это может быть следствием таких причин:

  • Вы пытаетесь использовать ссылки на стандартные процедуры (функции) или специальные массивы MEM, MEMW, MEML, PORT и PORTW в ассемблерных операндах;
  • Вы обращаетесь к строковой, вещественной константе или константе типа SET в операнде ассемблерной команды;
  • в ассемблерном операнде Вы обращаетесь к процедуре или функции, написанной в режиме INLINE;
  • Вы пытаетесь получить с помощью операции @Result доступ к результату, возвращаемому функцией;
  • Вы пытаетесь использовать короткую форму команды JMP для передачи управления в непомеченный оператор программы.

161 Code generation error (Ошибка генерации кода).

Ошибка возникает, в частности, при компиляции ассемблерных фрагментов, содержащих команды LOOP, LOOPE, LOOPNE, JCXZ, если команда ссылается на недоступную метку.

162 ASM expected (Отсутствует зарезервированное слово ASM).

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.