Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел 3_5.pdf
Скачиваний:
14
Добавлен:
11.02.2016
Размер:
490.41 Кб
Скачать

Приложение 3. Сообщения об ошибках

В данной главе приводятся возможные сообщения об ошибках, которые вы можете получить в Borland Pascal. Сообщения сгруппированы по следующим категориям:

сообщения компилятора об ошибках;

ошибки DOS;

ошибки ввода-вывода;

критические ошибки;

фатальные ошибки.

Ошибки этапа выполнения подразделяются на:

ошибки DOS,

ошибки ввода-вывода,

критические и фатальные ошибки;

ошибки интерфейса.

Некоторые сообщения об ошибках, которые применимы только к определенным платформам, помечены словами "Реальный режим", "Защищенный режим" или

"Windows".

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

При наличии возможности компилятор будет выводить на экран дополнительную диагностическую информацию в виде идентификатора или имени файла, например:

Error 15: File not found (GRAPH.TPU)

(Ошибка 15: файл не найден (GRAPH.TPU).)

При обнаружении ошибки Borland Pascal (в интегрированной среде IDE) автоматически загружает исходный файл и помещает курсор около ошибки. Компилятор, работающий в режиме командной строки, выводит на экран сообщение об ошибке, номер и исходную строку, используя для указания места ошибки символ каре (^). Учтите, что некоторые ошибки в исходном тексте до определенного времени не обнаруживаются. Например, несоответствие типов в операторе присваивания не может быть обнаружено до тех пор, пока не будет вычислено целиком выражение со знаком :=. В таких случаях ищите ошибку слева от курсора или над ним в предыдущем тексте.

1 Out memory. (Выход за границы памяти)

Данная ошибка появляется, если компилятор выполняется вне допустимых границ памяти. Имеется ряд возможных решений этой проблемы:

если в меню Compile¦Destination (Компиляция¦Назначение) устанавливается значение Memory (Память), установите его в интегрированной интерактивной среде в значение Disk (Диск);

если буфер в меню Options¦Linker¦Link Buffer (Параметры¦Компоновщик¦Буфер компоновки) кнопка с зависимой фиксацией установлена на Memory (Память), переключите ее на Disk;

При использовании компилятора, работающего в режиме командной строки, применяйте для компоновки на диске параметр /L.

Если ни одна из рекомендаций не помогает, то, возможно, ваша программа или программный модуль просто слишком велики, чтобы компилироваться в таком объеме памяти. В этом случае вы должны разбить его на два или более программных модуля.

2 Identifier expecte.(Не указан идентификатор).

Идентификатор должен находиться в этом месте. Возможно, вы пытаетесь использовать зарезервированное слово.

3Unknown identifier. (Неизвестный идентификатор). Этот идентификатор не был описан.

4Duplicate identifier. (Повторный идентификатор).

Идентификатор уже представляет имя программы (модуля), константы, переменной, типа, процедуры или функции, описанных в текущем блоке.

5Syntax error. (Синтаксическая ошибка).

Висходном тексте найден неверный символ. Возможно, вы забыли заключить в кавычки строковую константу.

6 Error in real constant.(Ошибка в вещественной константе).

7 Error in integer constant. (Ошибка в целой константе).

Учтите, что после чисел, превышающих диапазон представления целых чисел должны ставиться точка и ноль, например, 12345678912.0.

8 String constant exceeds line. (Строковая константа превышает раз-

меры строки). Вероятно, вы забыли поставить кавычку в конце строковой константы.

10 Unexpected end of file. (Неправильный конец файла)

Вы могли получить это сообщение об ошибке по одной из следующих причин:

Ваш исходный файл закончился перед последним end основного раздела операторов.

Вероятно, у вас неодинаковое количество операторов begin и end.

Включаемый файл заканчивается в середине раздела операторов. Каждый раздел операторов должен целиком помещаться в одном файле.

Вы не закончили комментарий.

11Line too long. (Строка слишком длинная) Максимальная длина строки может равняться 126 символам.

12Type identifier expected. (Нужен идентификатор типа)

Не указан тип идентификатора, как это должно быть.

13Too many open files. (Слишком много открытых файлов)

Если появляется эта ошибка, то это обозначает, что ваш файл CONFIG.SYS не включает параметр FILES=xx, или этот параметр указывает слишком мало файлов. Увеличьте число файлов какого-либо подходящего значения, например, 20.

14 Invalid file name. (Неверное имя файла)

Имя файла неверно или указывает не существующий маршрут.

15 File not found. (Файл не найден)

Файл не может быть найден ни в текущем каталоге, ни в каком-либо другом исследуемом каталоге, предназначенном для этого типа файлов.

16 Disk full. (Диск заполнен)

Удалите некоторые файлы или воспользуйтесь новым диском.

17Invalid compiler directive.(Неправильная директива компилятора) Неверная буква в директиве компилятора, один из параметров директивы компилятора неверный, или вы пользуетесь глобальной директивой компилятора, когда компиляция тела программы уже началась.

18Too many files. (Слишком много файлов)

Вкомпиляции программы или программного модуля участвуют слишком много файлов. Попытайтесь не использовать так много файлов, например, объединяя включаемые файлы или делая короче имена файлов.

20Variable identifier expected.(Нужен идентификатор переменной) Идентификатор не описывает переменную, как это должно быть.

21Error in type. (Ошибка в определении типа)

Определение типа не может начинаться с этого символа.

22Structure too large. (Слишком большая структура) Максимально допустимый размер структурного типа – 65535 байт.

23Set base type of range. (Базовый тип множества нарушает границы) Базовый тип множества должен представлять собой отрезок типа с границами в пределах от 0 до 255 или перечислимым типом с не более чем 256 значениями.

24File components may not be files or objects. (Компоненты файла не могут быть файлами или объектами).

Тип компоненты файлового типа не может иметь объектный тип или файловый тип и не может быть структурным типом с компонентами файлового или объектного типа:

конструкции file of file или file of object не допускаются.

25 Invalid string length. (Неверная длина строки)

Максимальная описываемая длина строки должна находиться в диапазоне от 1 до 255.

26 Type mismatch. (Несоответствие типов) Это может произойти по следующим причинам:

несовместимые типы переменной и выражения в операторе присваивания;несовместимые типы фактического и формального параметров в обращении к процедуре или функции;тип выражения, не совместимый с типом индекса при индексировании массива;

несовместимые типы операндов в выражении.

27 Invalid subrange base type. (Неправильный базовый тип отрезка

типа)

Все порядковые типы являются допустимыми базовыми типами.

28Lower bound greater than upper bound. (Нижняя граница больше

верхней).

Описание отрезка типа (поддиапазона) указывает нижнюю границу большей, чем верхняя.

29Ordinal type expected. (Нужен порядковый тип)

Типы действительные, строковые, структурные типы и ссылочные в данном случае не допускаются.

30Integer constant expected. (Нужна целая константа)

31Constant expected. (Нужна константа)

32Integer or real constant expected. (Нужна целая или веществен-

ная константа)

33Pointer type identifier expected. (Нужен идентификатор типа указателя).

Данный идентификатор не обозначает тип указателя, как это требуется.

34Invalid function result type. (Неправильный тип результата функ-

ции)

Правильными типами результата функции являются все простые типы, строковые типы

иссылочные типы.

35Label identifier expected. (Нужен идентификатор метки)

Метка не обозначена с помощью идентификатора, как это требуется.

36BEGIN expected. (Нужен BEGIN)

37END expected. (Нужен END)

38Integer expression expected. (Нужно выражение типа Integer)

Предыдущее выражение должно иметь тип целый тип Integer.

39Ordinal expression expected. (Нужно выражение порядкового типа) Предшествующее выражение должно иметь порядковый тип.

40Boolean expression expected. (Нужно выражение типа Boolean)

Предшествующее выражение должно иметь тип boolean.

41Operand types do not match operator. (Типы операндов не соот-

ветствуют оператору).

Данный оператор не может быть применен к операндам этого типа, например, 'A' разделить на '2'.

42Error in expression. (Ошибка в выражении)

Данный идентификатор не может участвовать в выражении указанным образом. Возможно, вы забыли указать операцию между двумя операндами, например 'A' div '2'.

43 Illegal assignment. (Неверное присваивание)

Нетипизированным файлам и переменным нельзя присваивать значения. Идентификатору функции можно присваивать значения только внутри раздела операторов данной функции.

44 Field identifier expected. (Нужен идентификатор поля)

Данный идентификатор не упоминает поле предшествующей переменной типа запись.

45 Object file too large. (Объектный файл слишком большой) Borland Pascal не может компоновать файлы .OBJ, размером превышающие 64К.

47 Invalid object file record. (Неправильная запись объектного фай-

ла)

Файл .OBJ содержит неверную объектную запись. Убедитесь, что данный файл является действительно файлом .OBJ.

48Code segment too large. (Сегмент кода слишком большой) Максимальный размер кода программы или программного модуля равняется 65520 байтам. Если вы компилируете программный модуль, разбейте его на два или более программных модуля.

49Data segment too large. (Сегмент данных слишком велик) Максимальный размер сегмента данных программы равен 65520 байтам, включая данные, описываемые используемыми программными модулями. Если вам нужно большее

количество глобальных данных, опишите большие структуры с помощью указателей и выделяйте для них память динамически с помощью процедуры New. Вы можете также получить это сообщение при компиляции программы Windows с директивой {G-}. В этом случае, если вы собираетесь запускать программу в защищенном режиме или поместить в ней строковые константы в строковый файл ресурса, попробуйте скомпилировать ее с директивой {G+}.

50 DO expected (Нужен оператор DO)

54 OF expected. (Требуется OF)

55 INTERFACE expected. (Требуется интерфейсная секция)

57THEN expected. (Требуется THEN)

58TO or DOWNTO expected. (Требуется ТО или DOWNTO)

59Undefined forward. (Не определено опережающее описание)

Были описаны процедура или функция в интерфейсной секции программного модуля, но их определение отсутствует в секции реализации. Процедуры или функции были описаны с помощью описания forward, но их определение не найдено.

61 Invalid typecast. (Неверное преобразование типа)

Размеры ссылки на переменную и тип результата отличаются друг от друга при изменении типа переменной. Вы пытаетесь осуществить приведение типа выражения, когда разрешается только ссылка на переменную, процедуру или функцию.

62Division by zero. (Деление на ноль)

Предшествующий операция пытается выполнить деление на ноль.

63Invalid file type. (Неверный файловый тип)

Данный файловый тип не обслуживается процедурой обработки файлов. Например, процедура Readln используется для типизированного файла, или процедура Seek - для текстового файла.

64 Cannot Read or Write variables of this type. (Нельзя считать или записать переменные данного типа).

Процедуры Read и Readln могут считывать переменные символьного, целого, вещественного и строкового типа. Процедуры Write и Writeln могут выводить переменные символьного, целого, действительного, булевского и строкового типа.

65Pointer variable expected. (Нужно использовать переменную-

указатель)

66String variable expected. (Нужна строковая переменная)

67String expression expected. (Нужно выражение строкового типа)

68Circular unit reference. (Циклическая ссылка на модуль)

Всекции interface два модуля не могут ссылаться друг на друга, но могут это делать в секции implementation. Переупорядочите операторы uses таким образом, чтобы циклические ссылки имели место только в секции implementation

69Unit name mismatch. (Несоответствие имен программных модулей)

Имя программного модуля, найденное в файле .TPU, .TPW или.TPP, не соответствует имени, указанному в операторе uses.

70 Unit version mismatch. (Несоответствие версий программных моду-

лей)

Один или несколько программных модулей используемых данной программой, были изменены после их компиляции. Воспользуйтесь командой Compile¦Make (Компиляция¦Формирование) или Compile¦Build (Компиляция¦Построение) в интегрированной интерактивной среде программирования и параметрами /М или /В в компиляторе, работающем в режиме командной строки, что позволит автоматически скомпилировать программные модули, нуждающиеся в перекомпиляции.

71 Internal stack overflow. (Переполнение внутреннего стека) Внутренний стек компилятора исчерпан из-за слишком большого уровня вложенности операторов. Переорганизуйте исходный код и уменьшите уровень вложенности. На-

пример, переместите внутренние уровни вложенных операторов в отдельную процедуру.

72 Unit file format error. (Ошибка формата файла программного мо-

дуля)

Файл .TPU, .TPW или .TPP (в зависимости от платформы) является недействительным. Возможно, он создан с помощью старой версии Turbo Pascal или Borland Pascal. В этом случае нужно перекомпилировать исходный код модуля и создать новый модуль.

73 Implementation expected. (Требуется секция реализации)

Ключевое слово implementation отсутствует там, где оно должно быть. Возможно, вы включили реализацию процедуры, функции или метода в интерфейсную часть модуля.

74Constant and case types do not match. (Типы констант и тип выражения оператора case не соответствуют друг другу).

Тип константы оператора case не совместим с выражением селектора в операторе варианта.

75Record variable expected. (Нужна переменная типа запись)

Предшествующая переменная должна иметь тип запись.

76 Constant out of range. (Константа нарушает границы)

Вы пытаетесь указать массив с константами, нарушающими границы. Вы пытаетесь присвоить константу вне диапазона переменной. Вы пытаетесь передать константу вне диапазона в качестве параметра процедуре или функции.

77File variable expected. (Нужна файловая переменная)

78Pointer expression expected. (Нужно выражение типа указатель)

79Integer or real expression expected. (Нужно выражение типа real или integer).

80Label not withhin current block. (Метка не находится внутри те-

кущего блока).

Оператор goto не может ссылаться на метку, находящуюся вне текущего блока.

81Label already defined. (Метка уже определена)

Данная метка уже помечает оператор.

82Undefined label in processing statement part. (Неопреде-

ленная метка в предшествующем разделе операторов).

Данная метка была описана, и на нее осуществлялась ссылка в предшествующем разделе операторов, но она не определена.

83Invalid @ argument. (Недействительный аргумент оператора @) Действительными аргументами являются ссылки на переменные и идентификаторы процедур или функций.

84Unit expected. (Нужно ключевое слово UNIT)

85";" expected. (Нужно указать ";")

86":" expected. (Нужно указать ":")

87"," expected. (Нужно указать ",")

88"(" expected. (Нужно указать "(")

89")" expected. (Нужно указать ")")

90"=" expected. (Нужно указать "=")

91":=" expected. (Нужно указать ":=")

92"[" or "(." Expected. (Нужно "[" или "(.")

93"]" or ".)" expected. (Нужно "]" или ".)")

94"." expected. (Нужно ".")

Требуется указать точку. Убедитесь, что тип не используется как переменная, или что имя программы не переопределяет важного идентификатора другого модуля.

95".." expected. (Нужно "..")

96Too many variables. (Слишком много переменных)

Общий размер глобальных переменных, описанных в программе или программном модуле, не может превышать 64К. Размер локальных переменных, описанных в программе или функции, не может превышать 64 Кбайт.

97Invalid FOR control variable. (Недопустимая управляющая переменная оператора FOR).

Управляющая переменная оператора for должна быть переменной перечислимого типа, определенной в разделе описаний текущей подпрограммы.

98Integer variable expected. (Нужна переменная целого типа)

99Files are not allowed here. (Здесь не допускаются файлы)

Типизированная константа не может иметь файловый тип.

100String length mismatch. (Несоответствие длины)

Длина строковой константы не соответствует количеству элементов символьного массива.

101Invalid ordering of fields. (Неверный порядок полей)

Поля в константе типа запись должны записываться в порядке их описания.

102String constant expected. (Нужна константа строкового типа)

103Integer or real variable expected. (Нужна переменная типа integer или real).

104Ordinal variable expected. (Нужна переменная порядкового типа)

106Character expression expected. (Предшествующее выражение должно иметь символьный тип).

107Too many relocation items. (Слишком много перемещаемых эле-

ментов)

[Только реальный режим.]. Размер раздела таблицы перемещения файла .EXE превышает 64К, что является верхним пределом в Borland Pascal. Если вы обнаружили эту ошибку, то это значит, что программа просто слишком велика для обработки компоновщиком Borland Pascal. Возможно также, что она слишком велика для выполнения в DOS. Преобразуйте некоторые модули программы в оверлейные. Это уменьшит число перемещаемых элементов в файле .EXE и объем памяти, требуемый для выполнения приложения. Измените программу на приложение защищенного режима DOS.

112 CASE constant out of range. (Константа CASE нарушает допусти-

мые границы)

108 Overflow in arithmetic operation. (Переполнение в арифметиче-

ской операции).

Результат предшествующей операции не находится в диапазоне Longint (- 2147483648..2147483647). Исправьте операцию или используйте вместо целочисленных значения вещественного типа.

109 No enclosing FOR, WHILE оr REPEAT statement. (Нет вклю-

чающего оператора FOR, WHILE или REPEAT).

Стандартные процедуры Break и Continue не могут использоваться вне операто-

ров for, while или repeat.

112 CASE constant out of range. (Константа case вне диапазона)

Для целочисленных операторов case константы должны лежать в диапазоне от -32768

до 32767.

113 Error in statement. (Ошибка в операторе)

Данный идентификатор не может начинать оператор.

118 Include files are not allowed here. (В такой ситуации вклю-

чаемые файлы не допускаются).

Каждый раздел операторов должен целиком размещаться в одном файле.

121 Invalid qualifier. (Неверный квалификатор)

Вы пытаетесь индексировать переменную, которая не является массивом. Вы пытаетесь указать поля в переменной, которая не является записью. Вы пытаетесь разыменовать переменную, которая не является указателем.

122 Invalid variable reference. (Недопустимая ссылка на перемен-

ную)

Предыдущая конструкция удовлетворяет синтаксису ссылки на переменную, но она не указывает адрес памяти. Наиболее вероятно, что вы модифицируете параметр const или вызываете функцию-указатель, но забываете разыменовать результат.

123 Too many symbols. (Слишком много идентификаторов)

Программа или программный модуль описывает более 64К идентификаторов. Если вы компилируете программу с помощью директивы {$D+}, то попробуйте отключить эту директиву. Учтите, однако, что это не гарантирует отсутствие ошибок этапа выполнения в таком модуле. В противном случае вы можете попытаться поместить некоторое описание в отдельный модуль.

124 Statement part too large. (Слишком большой раздел операторов) Borland Pascal ограничивает размер раздела операторов до величины примерно 24К. Если вы обнаружили эту ошибку, поместите части разделов оператора в одну или несколько процедур. В любом случае, при наличии раздела операторов такого размера, стоит не пожалеть времени и усилий сделать более ясной и понятной структуру своей программы.

126 Files must be var parameters. (Файлы должны иметь параметры

var)

Вы пытаетесь описать параметр значения файлового типа. Параметры файлового типа должны быть параметрами-переменными.

127 Too many conditional symbols. (Слишком много условных иден-

тификаторов).

Отсутствует место для определения условных идентификаторов. Попытайтесь удалить некоторые идентификаторы или сократить некоторые из символьных имен.

130 Error in initial conditional defines. (Ошибка в начальных условных определениях).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]