Лекция: Приложение Б. Сообщения об ошибках
Таблица 36. Сообщения об ошибках на шаге компиляции
Ниже приводятся коды ошибок и сообщения об ошибках, генерируемые компилятором языка Турбо-Паскаль. Кроме перевода сообщений в некоторых случаях даются необходимые пояснения, а также рекомендации по устранению ошибок.
Код ошибки | Сообщение об ошибке | Перевод сообщения, возможная причина ошибки и рекомендации для ее устранения |
Out of memory | «не хватает памяти» — Компилятор извещает, что доступной памяти недостаточно для размещения программы. Чтобы устранить ошибку, рекомендуется удалить из памяти ранее загруженные, но не используемые в данный момент программы, или указать, что объектный код должен выводиться на диск. Если это не дает результата, следует разделить программу или модуль на большее число модулей | |
Identifier expected | «ожидается идентификатор» — Возможно, в качестве идентификатора использовано зарезервированное слово | |
Unknown identifier | «неизвестный идентификатор» — Идентификатор не объявлен | |
Duplicate identifier | «дублируемый идентификатор» — Идентификатор объявлен дважды | |
Syntax error | «синтаксическая ошибка» — Обнаружен символ, отсутствующий в алфавите языка | |
Error in real constant | ошибка в записи константы вещественного типа | |
Error in integer constant | ошибка в записи константы целого типа | |
String constant exceeds line | «длина строковой константы превышает максимально допустимую длину строки» — Возможно, отсутствует закрывающий апостроф | |
Too many nested files | «слишком много вложенных файлов» — При включении исходных файлов (с помощью директив {$1 <имя файла >}) компилятор допускает не более 15 уровней вложенности | |
Unexpected end of file | «несвоевременное появление признака конца файла» Возможно, не совпадает количество операторов begin и end или не закрыт комментарий | |
Line too long | «слишком длинная строка» — Длина строки превысила 126 символов | |
Type identifier expected | «ожидается идентификатор типа» — В объявлении отсутствует идентификатор типа | |
Too many open files | «слишком много открытых файлов» — Следует задать большее число файлов в CONFIG.SYS (в записи FILES = < число) | |
Invalid file name | неправильно задано имя файла | |
File not found | файл не найден | |
Disk full | на диске нет свободного места | |
Invalid compiler directive | неправильно записана директива компилятора | |
Too many files | «слишком много файлов» — С помощью директив {$1 <имя файла>} включается чрезмерное количество исходных файлов | |
Undefined type in pointer definition | «необъявленный тип в объявлении указателя» — Не объявлен тип данных, указанный в объявлении ссылочного типа | |
Variable identifier expected | ожидается идентификатор переменной | |
Error in type | ошибка в объявлении типа | |
Structure too large | «структура слишком большая» — Превышен допустимый размер (65520 байт) области памяти для данных структурированного типа | |
Set base type out of range | «число значений базового типа для множества превышает допустимое» — Базовый тип не должен содержать более 256 значений | |
File components may not be files or objects | компонентами файла не могут быть файлы или объекты | |
Invalid string length | «недопустимая длина строки» — Превышена максимально допустимая длина строки (255) | |
Type mismatch | «несоответствие типов» — Не соответствуют друг другу типы данных в выражении | |
Invalid subrange base type | недопустимый базовый тип для интервального типа | |
Lower bound greater than upper bound | нижняя граница больше верхней границы | |
Ordinal type expected | ожидается ссылка на порядковый тип | |
Integer constant expected | ожидается целая константа | |
Constant expected | ожидается константа | |
Integer or real constant expected | ожидается целая или вещественная константа | |
Type identifier expected | ожидается идентификатор типа | |
Invalid function result type | недопустимый тип результата функции | |
Label identifier expected | ожидается идентификатор метки | |
Begin expected | ожидается зарезервированное слово begin | |
End expected | ожидается зарезервированное слово end | |
Integer expession expected | ожидается выражение целого типа) | |
Ordinal expession expected | ожидается выражение порядкового типа | |
Boolean expression expected | ожидается выражение булевого типа | |
Operand types do not match operator | типы операндов не соответствуют оператору | |
Error in expression | ошибка в выражении | |
Illegal assignment | неправильное присваивание | |
Field identifier expected | ожидается идентификатор поля записи | |
Object file too large | «объектный файл слишком большой» — OBJ-файл превысил максимально допустимый размер (65520 байт) | |
Undefined external | «не определена внешняя подпрограмма» — Вероятно, во внешней подпрограмме отсутствует соответствующее определение PUBLIC | |
Invalid object file record | «нераспознаваемая запись объектного файла» — Вероятно, объектный файл искажен | |
Code Segment too large | «кодовый сегмент слишком велик» — Превышен максимально допустимый размер кода программы или модуля (65520 байтов) | |
Data segment too large | «сегмент данных слишком велик» — Превышен максимально допустимый размер сегмента данных (65520 байтов) | |
Do expected | ожидается ключевое слово DO | |
Invalid PUBLIC definition | «неправильное определение public» — Несоответствие определения PUBLIC в программе на Ассемблере и директивы external в программе или модуле на Паскале | |
Invalid EXTRN definition | «неправильное определение extrn» — Вероятно, фрагмент программы на языке Ассемблера не объявлен в программе или модуле | |
Too many EXTRN ltfinition | «слишком много определений extrn» — Максимально допустимое число определений EXTRN в Obj-файле равно 256 | |
OF expected | ожидается зарезервированное слово OF | |
INTERFACE expected | ожидается зарезервированное слово INTERFACE | |
Invalid relocatable | «неправильно определена смещенная ссылка» — Вероятно, во фрагменте программы на языке Ассемблера неправильно задано смещение адреса | |
THEN expected | ожидается зарезервированное слово Then | |
TO or DOWNTO expected | ожидается зарезервированное слово To или downto | |
Undefined forward | не завершено опережающее объявление | |
Too many procedures | «слишком много процедур» — Превышено максимально допустимое (512) количество подпрограмм, объявленных в программе или модуле | |
Invalid Typecast | неверно описанное преобразование типов | |
62 | Division by zero | деление на нуль |
Invalid file type | неправильно задан файловый тип | |
Cannot Read or Write variables of type | «нельзя читать или писать переменные этого типа» — Предпринята попытка чтения/записи данных, не обрабатываемых процедурами Read/Readln и Write/Writeln. | |
Pointer variable expected | ожидается переменная ссылочного типа | |
String variable expected | ожидается строковая переменная | |
String expession expected | ожидается выражение строкового типа | |
Circular unit reference | «циклические ссылки модулей» — Не допускается, чтобы два модуля ссылались друг на друга | |
Unit name mismatch | «неправильное имя модуля» — Модуль, имя которого задано в директиве Uses, не найден | |
Unit version mismatch | «неверная версия модуля» — Модуль, подключаемый к программе, был изменен после компиляции | |
Duplicate unit name | имя модуля дублируется в директиве uses | |
Unit file format error | ошибка в спецификации файла модуля | |
Implementation expected | ожидается зарезервированное слово implementation | |
Constant and case types do not match | типы констант и селектора в операторе case не соответствуют друг другу | |
Record variable expected | ожидается переменная комбинированного типа | |
Constant out of range | константа не укладывается в допустимый диапазон | |
File variable expected | ожидается переменная файлового типа | |
Pointer expression expected | ожидается выражение ссылочного типа | |
Integer or real expression expected | ожидается выражение типа integer или real | |
Label not within current block | метка находится вне текущего блока | |
Label already defined | метка ранее уже объявлена | |
Undefined label in preceding statement part | необъявленная метка в предыдущей части раздела операторов | |
Invalid @ argument | неправильный аргумент оператора @ | |
UNIT expected | ожидается зарезервированное слово unit | |
“;” expected | ожидается точка с запятой | |
”:” expected | ожидается двоеточие | |
“,” expected | ожидается запятая | |
“(“ expected | ожидается открывающая круглая скобка | |
“)” expected | ожидается закрывающая круглая скобка | |
“=”' expected | ожидается знак равенства | |
”:=" expected | ожидается знак присваивания | |
”[“' or "(" expected | ожидаются знаки “[“ или “(“ | |
”]” or “)” expected | ожидаются знаки ']' или ')' | |
”.” expected | ожидается точка | |
”..” expected | ожидается горизонтальное двоеточие | |
Too many variables | «слишком много переменных» — Максимально допустимый размер памяти для размещения переменных равен 64К: – глобальных, объявленных в программе или модуле; – локальных, объявленных в подпрограмме | |
Invalid FOR control variable | «неправильная переменная цикла в операторе for» — Переменная цикла в операторе for должна принадлежать одному из простых типов | |
Integer variable expected | ожидается переменная целого типа | |
File and procedure types are not allowed here | в данном контексте файловый и процедурный типы недопустимы | |
String length mismatch | «неправильная длина строки» — Длина строковой константы не соответствует количеству элементов символьного массива. | |
Invalid ordering of fields | неправильный порядок следования полей | |
String constant expected | ожидается константа строкового типа | |
Integer or real variable expected | ожидается переменная типа integer или real | |
Ordinal variable expected | ожидается переменная порядкового типа | |
INLINE error | ошибка в директиве inline | |
Character expession expected | ожидается выражение символьного типа | |
Too many relocation items | «слишком много перемещаемых элементов» — Размер таблицы перемещаемых символов в объектном файле превышает 64К байта. Это означает, что программа слишком велика, чтобы ее смог обработать компоновщик Турбо-Паскаля. | |
Overflow in arithmetic operation. | переполнение при выполнении арифметической операции | |
No enclosing For, While or Repeat statement. | использование операторов Break и Continue вне пределов цикла | |
Case constant out of range | «в операторе case константа не вписывается в допустимый диапазон» — Целочисленные константы, используемые в операторе case, должны находиться в пределах от -32768 до 32767. | |
Error in statement | ошибка в операторе | |
Cannot call an interrupt procedure | не вызывается процедура прерывания | |
Must be in 8087 mode to compile this | «для компиляции данной конструкции должен быть установлен режим сопроцессора» — Данная конструкция может быть откомпилирована только в режиме {$ N+}. | |
Target address not found | «заданный адрес отсутствует» — Не обнаружен оператор, расположенный по заданному адресу. | |
Included files are not allowed here | «в заданном месте не допускается включение файла» — Исходные файлы нельзя включать внутри раздела операторов. | |
No inherited methods are accesible here. | неправильное использование ключевого слова Inherited | |
Invalid Qualifier | «неправильно указан квалификатор» — Возможны следующие причины появления сообщения: задан индекс переменной, не объявленной как массив; задано поле переменной, не объявленной как запись; в качестве указателя используется переменная, не объявленная как ссылочная | |
Invalid variable reference | неправильная ссылка на переменную | |
Too many symbols | «слишком много символов» — Длина текста программы или модуля превышает 64К байта | |
Statement part too large | «слишком велик раздел операторов» — Превышен максимально допустимый размер раздела операторов программы (около 24К байт) | |
Files must be var parameters | «файлы должны быть параметрами-переменными» — Параметры файлового типа в объявлении подпрограмм должны описываться как переменные. | |
Too many conditional symbols | «слишком много условных символов» — Недостаточно памяти для размещения имен, указанных в директивах условной компиляции Рекомендуется укоротить одно или несколько символических имен | |
Misplaced conditional directive | несоответствие директив условной компиляции | |
ENDIF directive missing | отсутствует директива {$ ENDIF} | |
Error in initial conditional defines | «ошибка в установке условных определений» — Условия компиляции, заданные в Options/Compiler/ Conditional defines, должны разделяться пробелами, запятыми или точками с запятой | |
Header does not match previous definition | «заголовок не соответствует предыдущему определению» — Заголовок подпрограммы, заданный в секции связи модуля или в объявлении, использующем forward, не соответствует данному заголовку | |
Critical disk error | серьезная ошибка дискового накопителя | |
Cannot evaluate this expression | данное выражение невозможно вычислить | |
Expession incorrectly terminated | «неправильно завершено выражение» — Вероятно, отсутствует точка с запятой | |
Invalid format specifier | неправильная спецификация формата | |
Invalid indirect reference | «неправильная косвенная ссылка» — Возможно, используется переменная типа absolute, базовая переменная которой не объявлена в данном модуле | |
Structured variables are not allowed here | в данном контексте структурные переменные недопустимы | |
Cannot evaluate without System unit | нельзя вычислить без модуля System | |
Cannot access this symbol | «невозможен доступ к данному символу» — Доступ к некоторым идентификаторам, например, переменным, возможен только после начала фактического выполнения программы | |
Invalid floating-point operation | «неправильная операция с плавающей точкой» » — Операция над двумя значениями вещественного типа привела к переполнению или делению на нуль | |
Cannot compile overlay to memory | нельзя компилировать код оверлейной программы в память | |
Procedure or function variable expected | ожидается переменная типа procedure или function | |
Invalid procedure or function reference | неправильная ссылка на процедуру или функцию | |
Cannot overlay this unit | «данный модуль нельзя сделать оверлейным» — Предпринята попытка объявить оверлейным модуль, который был откомпилирован без директивы {$0+ }. | |
Too many nested scopes | использование недопустимо большого числа вложенных элементов языка | |
File access denied | попытка использовать файл, предназначенный только для считывания, как выходной | |
Object type expected | ожидается объектный тип | |
Local object types are not allowed | «локальный объектный тип недопустим» — Объектный тип не должен объявляться в подпрограмме | |
VIRTUAL expected | ожидается зарезервированное слово virtual | |
Method identifier expected | ожидается идентификатор метода | |
Virtual constructors are not allowed | «виртуальные конструкторы недопустимы» — Метод-конструктор может быть только статическим | |
Constructor identifier expected | ожидается идентификатор конструктора | |
Destructor identifier expected | ожидается идентификатор деструктора | |
Fail only allowed withing constructors | «процедуру Fail можно использовать только внутри конструкторов» | |
Invalid combination of opcode and operands | «неправильное сочетание кода операции и операндов» — Код операции Ассемблера не допускает данного сочетания операндов | |
Memory reference expected | «ожидается ссылка на элемент памяти» — Вероятно, регистровый операнд не заключен в квадратные скобки | |
Cannot add or subtract relocatable symbols | сложение или вычитание переместимых символов недопустимо | |
Invalid register combination | указана неправильная комбинация регистров | |
286/287 Instructions are not enabled | «не разрешены инструкции процессора 286/287» — Отсутствует директива компилятора {$G+}, разрешающая использовать операции 286/287 | |
Invalid symbol reference | «неправильная ссылка на символ» — Данный символ нельзя использовать в ассемблерном операнде | |
Code generation error | ошибка при генерации кода | |
ASM expected | ожидается зарезервированное слово ASM |