П. 1.1. Ошибки компиляции
Cреда языка Turbo Pascal отбражает информацию о характере и месте обнаруженной компилятором ошибки. При обнаружении ошибки среда автоматически помещает курсор около того места, где в исходном тексте обнаружена ошибка. При этом в нижней части редактора появляется диагностическое сообщение. После нажатия на любую клавишу (кроме F1) верхняя строка востанавливает свой первоначальный вид и среда переходит к режиму редактирования .Если после появления сообщения об ошибке нажать
F1, на экране появляется окно справочной службы. Некоторые ошибки в исходном тексте обнаруживаются не сразу, а в ходе продалжающегося контекстного разбора. Например, не соответствие типов в операторе
присваивания не может быть обнаружено до тех пор, пока не будет вычеслено целиком выражение в правой части этого оператора. В таких случаях ищите ошибку слева от курсора или в предыдущей строке текста.
Ниже приводятся сообщения об ошибках втом виде, в каком они появляются в строке редактора ,а также перевод сообщений справочной службы .
1 Out of memory(Выход за границы памяти)
Компилятору не хватает памяти .Имеется ряд возможных решений этой
проблемы.
1. Если в опции OPTION/LINKER/LINK BUFFER установлено значение MEMORY, т о замените эту опцию на DISK;
2. Если используются резидентные обслуживающие программы, такие как SIDEKICK, NORTON, то удалите их из памяти;
2. Если ни одна из рекомендаций не помагает, то, возможно, Ваша программа слишком велика, чтобы компилировать ее в таком объеме памяти. В этом случае Вы должны разбить ее на два или более модулей.
2 Identifier expected(Не указан идентификатор)
В этом месте должен находиться идентификатор. Возможно, Вы пытаетесь использовать в качестве идентификатора зарезервированное слово.
3 Unknown identifier(Не известный идентификатор).
Этот идентификатор не был описан.
4 Duplicate identifier(Двойной идентификатор).
Попытка дважды описать один и тот же идентификатор.
5 Syntax error(Синтаксическая ошибка).
В исходном тексте найден не допустимый символ. Возможно, Вы забыли заключить в апострофы строковую константу.
6 Error in real constant (Ошибка в вещественной константе).
7 Error in integer constant(Ошибка в целой константе).
После целых действительных чисел, превышающих диапозон представления целых чисел(-2147483648..+2147483648), должны ставиться точка и ноль, например, 12345678912.0.
8 String constant exceeds line(строковая константа превышает допустимые размеры).
Вероятно, Вы забыли поставить апостроф в конце строковой константы.
9 Too many nested files(Слишком много вложенных файлов).
Компилятор допускает не более пяти уровней вложенности включаемых файлов (т.е. в исходном файле есть ссылка на включаемый файл, в котором есть ссылка на еще один включаемый файл и т.д.).
10 Unexpected end of file(Не найден конец файла).
Возможная причина ошибки:
1) исходный файл закончился перед последним END основного раздела операторов;
2) в программе неодинаковое количество операторов BEGIN и END;
3) включаемый файл заканчивается в середине раздела операторов;
4) каждый раздел операторов должен целиком помещаться в одном файле;
5) не закончен комментарий.
11 Line too long(Слишком длинная строка).
Максимальная длина строки, обрабатываемой компилятором, равна 126 символам (обратите внимание: редактор среды может обрабатывать строки практически неограниченной длины).
12 Type identifier expected(Здесь нужен идентификатор типа).
Не указан тип идентификатора.
13 Too many open files(Слишком много открытых файлов).
Появление этой ошибки означает, что конфигурационный файл CONFIG.SYS операционной системы не включает параметр или этот параметр FILES=xx
указывает слишком мало файлов. Увеличьтечисло файлов до нужного значения, например, до 80.
14 Invalid file name(Неверное имя файла).
Имя файла неверно или указан несуществующий путь.
15 File not found(Файл не найден).
Файл не был найден в просмотренных каталогах.
16 Disk full(Диск заполнен).
Удалите некоторые файлы или воспользуйтесь новым диском.
17 Invalid compiler directive(Не правельная директива компиля- тора).
Неверная буква в директиве компилятора, один из параметров директивы компилятора неверный, или Вы пользуетесь глобальной директивой компилятора, когда компиляция тела программы уже началась.
18 Too many files(Слишком много файлов).
В компиляции программы или программного модуля участвуют слишком много файлов. Попытайтесь не использовать так много файлов, например, объединяя включаемые файлы или делая короче имена файлов.
19 Undefined type in pointer definition(Не определенный тип в объявлении указателя).
Попытка объявить типизированный указатель, связанный сранее не объявленным типом данных.
20 Viriable identifier expected(Отсутствует идентификатор переменной).
На этом месте должен быть идентификатор переменной.
21 Error in type(Ошибка в объявлении типа).
Объявление типа не может начинаться с этого символа.
22 Structure too large(Слишком большая структура).
Максимально допустимый размер любого структурного типа составляет
65520 байт.
23 Set base type of range(Базовый тип множества нарушает границы).
Базовый тип множества должен представлять собой тип¾диапозон с границами в пределах от 0 до 255 или перечисляемый тип с не более чем 256 значениями.
24 File components may not be files(Компонентами файла не могут быть файлы).
25 Invalid string length(Не верная длина строки).
Объявляемая длина строки должна находиться в диапозоне от 1 до 255.
26 Type mismatch(Не соответствие типов).
Это сообщение может быть вызвано следующими причинами :
-несовместимые типы переменной и выражения в операторе присвоения;
- несовместимые типы фактического и формального параметров в обращении к процедуре или функции;
- тип выражения не совместим с типом индекса при индексировании массива;
- несовместимые типы операндов в выражении.
27 Invalid subrange base type(Неправильный базовый тип для типа-диапозона).
Допустимыми базовыми типами являются все порядковые типы.
28 Lower bound greater than upper bound(Нижняя граница больше верхней).
Описание типа – диапозона содержит неправильные границы.
29 Ordinal type expected(Нужен порядковый тип).
Вещественные, строковые, структурные, процедурные типы и указатели в данном месте программы не допускаются.
30 Integer constant expected(Нужна целая константа).
31 Constant expected(Нужна константа).
32 Integer or real constant expected(Нужна целая или вещественная константа).
33 Type identifier expected(Нужен идентификатор типа).
34 Invalid function result type(Неправильный тип результата функции).
Правильными типами результата функции являются все простые типы , строковые типы и указатели.
35 Label identifier expected(Нужен идентификатор метки).
Метка не обозначена с помощью идентификатора, как это требуется из контекста программы.
36 BEGIN expected(Нужен BEGIN).
37 END expected(Нужен END).
38 Integer expression expected(Нужно выражение типа INTEGER).
39 Ordinal expression expected(Нужно выражение перечисляемого типа).
40 Boolean expression expected(Нужно выражение типа BOOLEAN).
41 Operand types do not match operator(Типы операндов не соответствуют операции).
42 Error in expression(Ошибка выражении).
Данный символ не может участвовать в выражении указанным образом. Возможно,Вы забыли указать операцию между двумя операндами.
43 Illegal assignment(Не верное присвоение).
Файлам и нетипизированным переменным нельзя присваивать значения. Идентификатору функции можно присвоить значение только внутри раздела операторов данной функции.
44 Field identifier expected(Нужен идентификатор поля).
Попытка использовать запись целиком в том месте, где требуется ссылка на какое-либо после записи.
45 Object file too large(Объектный файл слишком большой).
Турбо Паскаль не может компонавать файлы .OBJ больше 64 Кбайт.
46 Undefined external(Не определенная внешняя процедура).
Внешняя процедура или функция не имеет соответствуещего определения PUBLIC в объектном файле. Убедитесь, что Вы указали все объектные файлы в
директивах {$L <имя .OBJ - файла>} и проверьте написание идентификаторовпроцедуры или функции в файле .ASM.
47 Invalid object file record(Не правильная запись объектного файла).
Файл .OBJ содержит неверную объектную запись. Убедитесь, что данный файл является действительно файлом .OBJ.
48 Code segment too large(Сегмент кода слишком большой).
Максимальный размер кода программы или программного модуля равняется 65520 байтам. Разбейте Вашу программу или модуль на два или более модулей.
49 Data segment too large(Сегмент данных слишком велик).
Максимальный размер сегмента данных программы равен 65520 байтам, включая данные, используемые программными модулями. Если Вам нужно большееколичество глобальных данных, опишите большие структуры с помощью указателей и выделяйте для них память динамически с помощью процедуры NEW.
50 DO expected(Нужен оператор DO).
51 Invalid PUBLIC definition(Не верное PUBLIC-определение).
Возможные причины сообщения:
- данный идентификатор получил тип PUBLIC с помощью соответствующей директивы языка ассемблера, но не соответствует описанию EXTERNAL в программы или программном модуле Паскаля;
- две или более директивы PUBLIC языка ассемблера определяют один и тот же идентификатор;
Файлы .OBJ определяют символы PUBLIC, не находящиеся в сегменте CODE.
52 Invalid EXTRN definition(Неправильный EXTRN-определение).
Возможные причины сообщения:
- программа на ассемблере ссылается с помощью директивы EXTRN на идентификатор,который не описан в программе на Паскале и не был описан в
- интерфейсных секциях используемых программных модулей;
- ассемблерная программа ссылается на идентификатор, обозначающий абсолютную переменную(т.е. определенную словом ABSOLUTE);
- ассемблерная программа ссылается на идентификатор процедуры или функции типа INLINE.
53 Too many EXTRNdefinition (Слишком много EXTRN-определений).
Турбо Паскаль не может обрабатывать файлы .OBJ при более чем 256 определениях EXTRN.
54 OF expected(Требуется OF).
55 INTERFACE expected(Требуется интерфейсная секция).
56 Invalid relocatable reference(Неправильная перемещаемая ссылка).
Возможные причины сообщения:
- файл .OBJ содержит данные и перемещаемой ссылки сегментах, отличных от CODE. Например, Вы пытаетесь описать инициализированные переменные в сегменте DATA;
- файл .OBJ содержит ссылки с размерами в байтах на перемещаемые символы.Такая ошибка происходит в случае, если Вы используете операторы HIGH и LOW с перемещаемыми символами или если Вы ссылаетесь в директивах DB на перемещаемые символамы;
- операнд ссылается на перемещаемый символ, который не был определен в сегменте CODE или в сегменте DATA;
- операнд ссылается на процедуру EXTRN или функцию EXTRN со сдвигом, например, CALL SortProc+8.
57 THEN expected(Требуется THEN).
58 TO or DOWNTO expected(Требуется TO или DOWNTO).
Дата добавления: 2015-01-13; просмотров: 1711;