Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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

 

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

Error 15: File not found (WINDOW.TPU)

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

 

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

 

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

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

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

- Если буфер в меню Options¦Linker¦Link Buffer (Параметры¦Компоновщик¦Буфер компоновки) многопозиционный переключатель установлен на Memory (Память), переключите его на Disk (Диск). При использовании компилятора, работающего в режиме командной строки, применяйте для компоновки на диске параметр /L.

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

 

2 Identifier expected

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

 

3 Unknown identifier

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

 

4 Duplicate identifier

(Повторный идентификатор) В текущем блоке этот идентификатор уже использовался.

 

5 Syntax error

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


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

 

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

 

8 String constant exceeds line.

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

 

9 Too many nested files

(Слишком много вложенных файлов) Компилятор допускает не более 15 вложенных исходных файлов. Но более вероятно, у вас имеется больше 4 включаемых файлов.

 

10 Unexpected end of file

(Неправильный конец файла) Вы могли получить это сообщение об ошибке по одной из следующих причин:

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

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

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

 

11 Line too long (Строка слишком длинная)

Максимальная длина строки может равняться 126 символам.

 

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

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

 

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

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

 

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 Variable 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 or objects

(Компоненты файла не могут быть файлами или объектами)

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

 

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 Pointer type identifier expected

(Нужен идентификатор типа указателя)

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

 

34 Invalid function result type

(Неправильный тип результата функции)

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

 

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

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

 

36 BEGIN expected (Нужен BEGIN)

Либо здесь требуется ключевое слово begin, либо имеется ошибка в структуре блока, модуля или программы.

 

37 END expected (Нужен END)

Либо здесь требуется ключевое слово end, либо имеется ошибка в структуре блока, модуля или программы.

 

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

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

 

39 Ordinal expression expected

(Нужно выражение порядкового типа)

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

 

40 Boolean expression expected

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

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

 

41 Operand types do not match operator

(Типы операндов не соответствуют оператору) Данная операция не может быть примененa к операндам этого типа, например, 'A' div '2'.

 

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

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

 

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

- Нетипизованным файлам и переменным нельзя присваивать значения.

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


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

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

 

45 Object file too large (Объектный файл слишком большой)

Турбо Паскаль не может компоновать файлы.OBJ размером больше 64К.

 

46 Undefined external (Не определенная внешняя процедура)

Внешняя процедура или функция не имеет соответствующего определения PUBLIC в объектном файле. Убедитесь, что вы указали все объектные файлы в директивах {$L имя_файла} и проверьте написание идентификаторов процедуры или функции в файле.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)

Там, где то требуется, не указано ключевое слово DO.

 

51 Invalid PUBLIC definition (Неверное определение PUBLIC)

- Идентификатор был описан общедоступным в языке Ассемблера с помощью директивы PUBLIC, но это не было описано в программе или программе или модуле на Паскале с помощью описания external.

- Две или более директивы PUBLIC на языке Ассемблера определяют один и тот же идентификатор.

- Объектный файл определяет идентификаторы PUBLIC, которые не находятся в сегменте CODE.

 

52 Invalid EXTRN definition (неправильное определение EXTRN)

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

- Идентификатор обозначает абсолютную переменную.

- Идентификатор обозначает процедуру или функцию типа inline.

 

53 Too many EXTRN definition

(Слишком много определений типа EXTRN)

Турбо Паскаль не может обрабатывать файлы.OBJ при более чем 256 определениях EXTRN.

 

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

Там, где то требуется, не указано ключевое слово of.

 

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

Там, где то требуется, не указано ключевое слово interface.

 

56 Invalid relocatable reference (Недопустимая перемещаемая ссылка)

- Файл.OBJ содержит данные и перемещаемые ссылки в сегментах, отличных от CODE. Например, вы пытаетесь описать инициализированные переменные в сегменте DATA.

- Файл.COМ содержит ссылки с размерами в байтах на перемещаемые идентификаторы. Такая ошибка происходит в случае, если вы используете операторы HIGH и DOWN с перемещаемыми символами или если вы ссылаетесь в директивах DB на перемещаемые идентификаторы.

- Операнд ссылается на перемещаемый идентификатор, который не был определен в сегменте CODE или в сегменте DATA.

- Операнд ссылается на процедуру EXTRN или функцию EXTRN со смещением, например, CALL SortProc+8.

 

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

Там, где то требуется, не указано ключевое слово then.

 

58 TO or DOWNTO expected

(Требуется ключевое слово ТО или DOWNTO)

Там, где то требуется, не указано ключевое слово to или downto.

 

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

- Были описаны процедура или функция в интерфейсной секции программного модуля, но их определение отсутствует в секции реализации.

- Процедуры или функции были описаны с помощью опережающего описание, но их определение не найдено.

 

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

- Размеры ссылки на переменную и тип результата отличаются друг от друга при изменении типа переменной.

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

 

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

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

 

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

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

 

64 Cannot Read or Write variables of this type

(Нет возможности считать или записать переменные данного типа)

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

 


65 Pointer variable expected

(Нужно использовать переменную-указатель)

Предыдущая переменная должна иметь типа указатель.

 

66 String variable expected

(Нужна строковая переменная)

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

 

67 String expression expected

(Нужно выражение строкового типа)

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

 

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

Не допускается использование двумя модулями друг друга:

unit U1; unit U2;

uses U2; uses U1;

......

В данном примере выполнение Make для любого из модулей приведет к ошибке 68.

 

69 Unit name mismatch

(Несоответствие имен программных модулей) Имя программного модуля, найденное в файле.TPU, не соответствует имени, указанному в операторе uses.

 

70 Unit version mismatch

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

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

 

71 Duplicate unit name (Повторное имя программного модуля)

Вы уже указали этот программный модуль в операторе uses.

 

72 Unit file format error

(Ошибка формата файла программного модуля)

Файл.TPU является недействительным. Убедитесь, что это действительно файл.TPU. 73 Implementation expected (Требуется секция реализации) Там, где то требуется, не указано ключевое слово implementation.

 

74 Constant and case types do not match

(Типы констант и тип выражения оператора case не соответсвуют друг другу) Тип константы оператора case не совместим с выражением в операторе варианта.

 

75 Record variable expected

(Нужна переменная типа запись)

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

 

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

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

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

- Вы пытаетесь передать константу вне диапазона в качестве параметра процедуре или функции.

 

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

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

 

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

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

 

79 Integer or real expression expected

(Нужно выражение типа real или integer).

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

 

80 Label not withhin current block

(Метка не находится внутри текущего блока)

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

 

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

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

 

82 Undefined label in processing statement part

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

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

 

83 Invalid @ argument (Недействительный аргумент оператора @)

Действительными аргументами являются ссылки на переменные и идентификаторы процедур или функций.

 

84 Unit expected (Нужно UNIT)

Не указано ключевое слово 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 (Нужно "..") Требуется указать точки.

 

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

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

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

 

97 Invalid FOR control variable

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

 

103 Integer or real variable expected

(Нужна переменная типа integer или real)

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

 

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

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

 

105 INLINE error (Ошибка в операторе INLINE)

Оператор < не допускается в сочетании с перемещаемыми ссылками на переменные. Такие ссылки всегда имеют размер в слово.

 


106 Character expression expected

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

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

 

112 CASE constant out of range

(Константа CASE нарушает допустимые границы)

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

 

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

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

 

114 Cannot call an interrupt procedure

(Нет возможности вызвать процедуру прерывания)

Вы не можете непосредственно вызвать процедуру прерывания.

 

116 Must be in 8087 mode tp compile this

(Для компиляции необходим режим 8087)

Данная конструкция может компилироваться только в режиме {$N+}. В состоянии {$N-} операции с типами real (одиночной и двойной точности, расширенными и сложными) не допускаются.

 

117 Target address not found (Адрес назначения не найден)

Команда Search¦Find Error (Компиляция¦Поиск ошибки) в интегрированной интерактивной среде или параметр /F в командной строке компилятора не позволяют обнаружить оператор, соответствующий указанному адресу.

 

118 Include files are not allowed here

(В такой ситуации включаемые файлы не допускаются)

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

 

120 NIL expected (Нужен NIL)

Типизованные константы или указатели могут инициализироваться только значением nil.

 

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

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

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

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

 

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

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

 


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

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

 

124 Statement part too large (Слишком большой раздел операторов)

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

 

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

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

 

127 Too many conditional symbols

(Слишком много условных идентификаторов)

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

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

 

128 Misplaced conditional directive (Пропущена условная директива)

Компилятор обнаружил директиву {$ELSE} или {$ENDIF} без соответствующих директив {$IFDEF}, {$IFNDEF} или {$IFOPT}.

 

129 ENDIF directive missing (Пропущена директива ENDIF)

Исходный файл закончился внутри конструкции условной компиляции. В исходном файле должно быть равное количество директив {$IFxxx} и {$ENDIF}.

 

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

Исходные условные идентификаторы, указанные в меню Options¦Compiler¦Conditional Defines (Параметры¦Компилятор¦Условные определения) или в параметре /D компилятора командной строки, являются недопустимыми. Турбо Паскаль требует 0 или более идентификаторов, разделенных пробелами, запятыми или точками с запятыми.

 

131 Header does not match previous definition

(Заголовок не соответствует предыдущему определению)

Заголовок процедуры или функции, указанный в интерфейсной секции или в опережающем описании (описании forward), не соответствует самому заголовку процедуры или функции.

 

131 Critical disk error (Критическая ошибка диска)

Во время компиляции произошла критическая ошибка диска (например, дисковод находится в состоянии " не готов").

 


132 Cannot evaluate this expression

(Нельзя вычислить данное выражение)

В выражении-константе вы пытаетесь использовать неподдерживаемые средства, например, в описании константы пытаетесь использовать функцию Sin или вызвать в отладочном выражении определенную пользователем функцию.

 

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

Оператор пытается осуществить недопустимую косвенную ссылку.

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

 

137 Structured variable are not allowed here

(Здесь не допускается использование структурной переменной) Делается попытка выполнить над структурной переменной неподдерживаемую операцию. Например, вы пытаетесь перемножить две записи.

 

140 Invalid floating-point operation

(Недопустимая операция с плавающей точкой)

При операции с двумя действительными значениями было получено переполнение или деление на ноль.

 

142 Procedure or function variable expected

(Должна использоваться переменная-процедура или функция)

В этом контексте оператор получения адреса @ может использоваться только с переменной-процедурой или функцией.

 

143 Invalid procedure or function reference

(Недопустимая ссылка на процедуру или функцию)

- Попытка вызова процедуры или функции в выражении.

- Если их нужно присвоить переменной-процедуре, процедура или функция должны компилироваться в состоянии {$F+} и не могут описываться с помощью ключевых слов inline или interrupt.

 

147 Object type expected (Нужен объектный тип)

Идентификатор не определяет объектный тип.

 

148 Local objet types not allowed

(Локальные объектные типы не допускаются)

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

 

149 VIRTUAL expected (требуется VIRTUAL)

Отсутствует ключевое слово virtual.

 

150 Method identifier expected (Нужен идентификатор метода)

Идентификатор не является идентификатором метода.

 


151 Virtual constructor are not allowed

(Виртуальный конструктор не допускается)

Метод конструктора должен быть статическим.

 

152 Constructor identifier expected

(Нужен идентификатор конструктора)

Идентификатор не является идентификатором конструктора.

 

153 Destructor identifier expected (нужен идентификатор деструктора)

Идентификатор не является идентификатором деструктора.

 

154 Fail only allowed within constructors

(Fail допускается только внутри конструкторов)

Стандартная процедура Fail может использоваться только внутри конструктора.

 

155 Invalid combination of opcode and operands

(Недопустимая комбинация кода операции и операндов)

Код операции Ассемблера не воспринимает данное сочетание операндов. Возможны следующие причины:

- Для данного кода операции Ассемблера слишком много или слишком мало операндов, например, INC AX, BX или MOV AX.

- Число операндов корректно, но их тип и порядок не соответствуют коду операции, например, DEC 1, MOV AX, CL или MOV AX, [BX+SI].

 

157 Cannot add or substract relocatable symbols

(Нельзя складывать или вычитать перемещаемые идентификаторы)

Единственная операция, которую допускается выполнять с перемещаемыми идентификаторами в операнде Ассемблера - это сложение с константой или вычитание константы. Переменные, процедуры, функции и метки представляют собой перемещаемые идентификаторы. Предположим, что Var - это переменная, а Const - константа. Тогда инструкции MOV AX, Const+Const и MOV AX, Var+Const являются допустимыми, а MOV AX, Var+Var - нет.

 

158 Invalid register combination (Недопустимое сочетание регистров)

Допустимыми сочетаниями индексных регистров являются [BX], [BP], [SI], [DI], [BX+SI], [BX+DI], [BP+SI] и [BP+DI]. Другое сочетание индесных регистров, например, [AX], [BP+BX] и [SI+DX] не допускается.

Локальные переменные (переменные, описанные в процедуре или функции) всегда размещаются в стеке и доступны через регистр BP. При ссылках на такие переменные Ассемблер автоматически добавляет [BP], поэтому, хотя конструкция типа Local[BX] (где Local - локальная переменная) выглядит допустимой, это не так, поскольку в итоге операндом будет Local[BP+BX].

 

159 286/287 Instructions not allowed

(Инструкции процессоров 286/287 не разрешены)

Для разрешения кодов операций указанных процессоров используйте директиву компилятора {$G+}, но имейте в виду, что результирующий код не сможет работать на машинах с процессорами 8086 и 8088.

 


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

Данный идентификатор в операнде Ассемблера недоступен. Возможны следующие причины:

- В операнде Ассемблера вы пытаетесь обратиться к стандартной процедуре, стандартной функции, или специальным массивам Mem, MemW, MemL, Port, PortW.

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

- В операнде Ассемблера вы пытаетесь обратиться к процедуре или функции типа inline.

- Вне функции вы пытаетесь обратиться к специальному идентификатору @Result.

- Вы пытаетесь сгенерировать короткую инструкцию JMP, которая выполняет переход не на метку, а на что-то другое.

 

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

Предшествующая часть оператора содержит инструкции LOOPNE, LOOPE, LOOP или JCXZ, которые не могут достичь целевой метки.

 

162 ASM expected (Нужно ключевое слова ASM)

 

163 Duplicate dynamoc method index

(Дублирование индекса динамического метода)

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

 

164 Duplicate resource identifier

(Дублирование идентификатора ресурса)

Данный файл ресурса содержит ресурс с именем или идентификатором, которые уже используются для другого ресурса.

 

165 Duplicete or invalid export index

(Дублипрующийся или недопустимый индекс экспорта)

Порядковый номер, заданный в операторе Index, не находится в диапазоне 1..32767, или уже используется другой экспортируемой подпрограммой.

 

166 Procedure or function identifier expected

(Ожидается идентификатор процедуры или функции)

Оператор export допускает экспорт только процедур и функций.

 

167 Cannot export this symbol

(Этот идентификатор экспортировать нельзя)

Процедура или функция не может экспортироваться, если она не описана в операторе процедуры export.

 

168 Duplicate export name (Дублирование экспортируемого имени)

Имя, заданное в операторе name, уже используется для другой экспортируемой подпрограммы.

 


Ошибки, возникающие во время выполнения программы

 

Некоторые ошибки этапа выполнения приводят к тому, что программа выводит на экран сообщение об ошибке и завершает свою работу:

 

Runtime error nnn at xxxx: yyyy

(Ошибка этапа выполнения nnn по адресу xxxx: yyyy)

 

где nnn - номер ошибки времени выполнения, а xxxx: yyyy - это адрес ошибки этапа выполнения (сегмент и смещение).

 

Ошибки этапа выполнения делятся на две категории: ошибки DOS (коды ошибок с 1 до 99), ошибки ввода-вывода (с 100 по 149), критические ошибки (со 150 по 199) и фатальные ошибки (коды ошибок с 200 до 255).

 

Ошибки DOS

 

1 Invalid function number (Недопустимый номер функции)

Вы обратились не несуществующей функции DOS.

 

2 File not found (Не найден файл)

Ошибка генерируется процедурами Reset, Append, Rename или Erase в случае, если имя присвоенное файловой переменной, указывает несуществующий файл.

 

3 Path not found (Маршрут не найден)

- Ошибка генерируется процедурами Reset, Rewrite, Append или Erase в случае, если имя присвоенное файловой переменной, является недействительным или указывает на несуществующий подкаталог.

- Описывается ChDir, MkDir или RmDir в случае, если маршрут является недействительным или указывает несуществующий подкаталог.

 

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

Ошибка генерируется процедурами Reset, Rewrite или Append в случае, если программа имеет слишком много открытых файлов. Операционная система DOS не позволяет использовать более 15 открытых файлов для каждого процесса. Если вы получили эту ошибку при наличии менее 15 открытых файлов, то она может указывать на то, что файл CONFIG.SYS не включает параметров FILES=xxx или что этот параметр задает слишком мало файлов. Увеличьте число файлов до какого-либо подходящего значения, например, до 20.

 

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

- Данная ошибка генерируется процедурой Reset или Append в случае, если FileMode допускает запись, а имя, присвоенное файловой переменной, указывает каталог или файл, доступные только для чтения.

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

- Данная ошибка генерируется процедурой Rename в случае, если имя, присвоенное файловой переменной, указывает каталог или если новое имя указывает существующий файл.

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

- Данная ошибка генерируется процедурой MkDir в случае, если файл с тем же именем уже существует в порождающем каталоге, если нет места в порождающем каталоге, или если маршрут задает устройство.

- Эта ошибка генерируется процедурой RmDir в случае, если каталог не является, пустым, если маршрут не определяет каталог, или если маршрут задает корневой каталог.

- Данная ошибка генерируется процедурой Read или BlockRead в случае типизированного или нетипизованного файла, если файл не открыт для чтения.

- Эта ошибка генерируется процедурой Write или BlockWrite для типизованного или нетипизованного файла в случае, если этот файл не открыт для записи.

 

6 Invalid file handle (Недопустимый описатель файла)

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

 

12 Invalid file access code (Недействительный код доступа к файлам)

Ошибка генерируется процедурами Reset или Append в файле с типом или без типа в случае, если значение FileMode является не действительным.

 

15 Invalid drive number (Недопустимый номер дисковода)

Ошибка генерируется процедурой GetDir в случае, если номер дисковода недопустим.

 

16 Cannot remove current directory (Нельзя удалить текущий каталог)

Ошибка генерируется процедурой RmDir в случае, если маршрут указывает текущий каталог.

 

17 Cannot rename across drives

(Нельзя при переименовании указывать разные дисководы)

Описывается Rename в случае, если оба файла не находятся на одном и том же диске.

 

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

 

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

 

100 Disk read error (Ошибка чтения диска)

Описывается Read в типизированном файле в случае, если вы пытаетесь осуществить считывание после конца файла.

 

101 Disk write error (Ошибка записи на диск)

Ошибка генерируется процедурами Close, Write, Writeln, Flush или Page в случае, если диск заполнен.

 

102 File not assigned (Файлу не присвоено имя) Ошибка генерируется процедурами Reset, Rewrite, Append Rename и Erase в случае, если файловой переменной не было присвоено имя с помощью обращения к процедуре Assign.

 

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 и Page в текстовом файле в случае, если файл не открыт для вывода.

 

106 Invalid numeric format (Неверный числовой формат)

Описывается Read или Readln в случае, если числовое значение, считанное из текстового файла, не соответствует правильному числовому формату.

 

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

 

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

 

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

В программе при операции /, mod или div предпринимается попытка разделить число на 0.

 

201 Range check error (Ошибка при проверке границ)

Ошибка генерируется процедурами операторами, скомпилированными в состоянии {$R+}, при возникновении одной из следующих ситуаций:

- индексное выражение квалификатора массива находилось вне допустимого диапазона;

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

 

202 Stack overflow error (Переполнение стека)

Эта ошибка генерируется на входе в процедуру или функцию, скомпилированные в режиме {$S+}, в случае, если нет достаточной области для размещения локальных переменных подпрограммы. Увеличьте размер стека, используя директиву компилятора $M.

Данная ошибка может также вызываться циклической рекурсией или процедурой на Ассемблере, которая не поддерживает стек.

 


203 Heap overflow error

(Переполнение динамически распределяемой области памяти)

Эта ошибка генерируется процедурами New или GetMem, в том случае, если нет достаточно свободного места в динамической области памяти, чтобы выделить память для блока требуемого размера.

 

204 Invalid pointer operation (Недействительная операция с указателем)

Эта ошибка генерируется процедурами Dispose или FreeMem в случае, если ссылка имеет значение nil или указывает на адрес, лежащий за пределами динамически распределяемой области, или если список свободных блоков не может быть расширен.

 

205 Floating point overflow

(Переполнение при операции с плавающей точкой)

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

 

206 Floating point underflow

(Исчезновение порядка при операции с плавающей точкой)

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

 

207 Invalid floating point operation

(Недопустимая операция с плавающей точкой)

- Вещественное значение, передаваемое подпрограмме Trunc или Round, не может быть преобразовано в целое число, находящееся внутри диапазона типа longint (от -2147483648 до 2147483647).

- Аргумент, предаваемый функции Sqrt (извлечение квадратного корня), отрицательный.

- Аргумент, передаваемый функции Ln (логарифм), равен нулю или имеет отрицательное значение.

- Произошло переполнение стека сопроцессора 80х87. Более подробно о правилах программирования 80х87 смотрите в соответствущей главе (Глава 15 " Использование сопроцессора 80х87).

 

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

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

 

211 Call to abstract method (Вызов абстрактного метода)

Данная ошибка генерируется процедурой Abstract модуля WObjects и указывает, что ваша программа пытается выполнить абстрактный виртуальный метод. Когда объектный тип содержит один или более абстрактных методов, он называется абстрактным объектным типом. Инициализация объектов абстрактного типа считается ошибкой - абстрактные объектные типы существуют только для того, чтобы вы могли из них наследовать и переопределять абстрактные методы.


Например, метод Compare типа TSortedCollection в модуле WObjects является абстрактным и показывает, что для реализации отсортированного набора вы должны создать объектный тип, наследующий из TSortedCollection и переопределяющий метод Compare.

 

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

Данная ошибка генерируется процедурой RegisterType в модуле WObjects и указывает, что произошла одна из следующих ошибок:

- Запись регистрации потока не находится в текущем сегменте данных.

- Поле ObType записи регистрации потока является нулевым.

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

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

 

213 Collection index out of range (Индекс набора вне диапазона)

Индекс, передаваемый методу TCollection, выходит за границы диапазона.

 

214 Collection overflow error (Ошибка переполнения набора)

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

<== предыдущая лекция | следующая лекция ==>
Сады Ватикана | Надежда




© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.