Из-за синтаксической ошибки в тексте модуля Pascal неполный исходный код не мог быть сгенерирован полностью

program c1;
 uses
 crt,dos;
 var
  f1:text;
  f2:file of real;
  a,b,c,d:real;
  i1:longint;
  r1:real;
begin
 clrscr;
 writeln('programm module run');
 assign(f1,'с1.dat');
 reset(f1);
 read(f1,a); {чтение данных}  
 read(f1,b); {чтение данных}
 read(f1,c); {чтение данных}
 read(f1,d); {чтение данных}

 for i1:=1 to 12000000 do       {основной цикл для усиления вычислительной  сложности задачи по сравнению с обменом по сети}
      begin
   gotoxy(1,1); 	{установка курсора в позицию 1, 1}
    writeln(i1); 	{вывод текущего значения переменной цикла}
 	   r1:= (a/b+d-c)*4.5; {вычисление первой части 
формулы}
   writeln(r1:5:2); 	{вывод результата на экран}
     end;
 assign(f2,'out.dat');
 rewrite(f2);
 write(f2,r1); {запись результата в файл}
 close(f1);
 close(f2);
 writeln('programm module end');
end.

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

program MouseInput;
Uses WinCrt,WinMouse, Graph;
Var GraphicsDriver, GraphicsMode :smallint;
x, y: smallint;

function GetMouseX: word;
begin
end;
function GetMouseY: word;
begin
end;
procedure InitMouse;
begin
end;

procedure DoneMouse;
Begin
     Writeln('Initialising Graphics, please wait...');
     GraphicsDriver := Detect;
     InitGraph(GraphicsDriver, GraphicsMode,'');
     begin
          InitMouse;
          Writeln('Move mouse cursor to square 10,10 to end');
          Repeat
                X:=GetMouseX;
                Y:=GetMouseY;
                Writeln('X,Y= (',X,',',Y,')');
          Until (X=9) and (Y=9);
          DoneMouse;
     end;
end;

begin
end.

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

unit CommonSort;
interface
const n=10;
      m=5;
      p=14;
type TVector=array[1..n*p] of integer;
     TMatr=array[1..n,1..p] of integer;
     TCube=array[1..n,1..m,1..p] of integer;
     SplitsCube=array[1..m] of TMatr;
function SplitingCube(Cube:TCube):SplitsCube;
function RestoreCube(Splits:SplitsCube):TCube;
implementation
function SplitingCube;
var i,j,k:byte;
    Matr:TMatr;
    SplitingCubex:SplitsCube;
begin
for j:=1 to m do
    begin
    for i:=1 to n do
        for k:=1 to p do
            Matr[i,k]:=Cube[i,j,k];
    SplitingCubex[j]:=Matr;
    end;
SplitingCube:=SplitingCubex;
end;
function RestoreCube;
var i,j,k:byte;
    Matr:TMatr;
    RestoreCubex:TCube;
begin
for j:=1 to m do
    begin
    Matr:=Splits[j];
    for i:=1 to n do
        for k:=1 to p do
            RestoreCubex[i,j,k]:=Matr[i,k];
    end;
RestoreCube:=RestoreCubex;
end;
end.

ShamrockMD

0 / 0 / 0

Регистрация: 16.01.2013

Сообщений: 6

1

Ошибка синтаксиса в паскале

05.06.2013, 20:01. Показов 3311. Ответов 2

Метки нет (Все метки)


Здравствуйте,
я новичок в программировании. По учебнику ввожу программу:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Program roots;
Var a,b,c,d,x1,x2: real;
Begin
repeat
writeln('enter a,b,c;a<>0');
readln(a,b,c)
until a=0
d:=b*b-4*a*c;
if d>0
then begin
x1:=(-b+sqrt(d))/2*a;
x2:=(-b-sqrt(d))/2*a;
writeln('x1=',x1
'x2=',x2);
end
else writeln('no roots')
end.

Ошибка 85: Предполагается “;” и курсор прыгает в конец строки 11.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Puporev

Почетный модератор

64230 / 47532 / 32736

Регистрация: 18.05.2008

Сообщений: 115,182

05.06.2013, 20:56

2

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Program roots;
Var a,b,c,d,x1,x2: real;
Begin
repeat
writeln('enter a,b,c;a<>0');
readln(a,b,c)
until a<>0;
d:=b*b-4*a*c;
if d>=0 then
 begin
  x1:=(-b+sqrt(d))/2*a;
  x2:=(-b-sqrt(d))/2*a;
  writeln('x1=',x1,'  x2=',x2);
 end
else writeln('no roots')
end.



1



0 / 0 / 0

Регистрация: 16.01.2013

Сообщений: 6

05.06.2013, 21:25

 [ТС]

3

Спасибо. Работает. Ошибка в учебнике



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

05.06.2013, 21:25

3

Формулировка задачи:

Unit SourceModMenu;
 
interface
 
Uses Crt;
 
function Menu(X,Y: integer):integer; //Функция для меню
Procedure Menu80; // Процедура для функции Menu. При нажатии стрелкии вверх
Procedure Menu72; // Процедура для функции Menu. При нажатии стрелкии вниз
 
var Choose: integer;
 
implementation
 
var
CurrStr: integer;
strall1: string;
strall2: string;
strall3: string;
 
Function Menu(X,Y: integer;str1,str2,str3: string):integer;
var
key: char;
CucleEnd: boolean;
begin
Clrscr;
CurrStr:=1;
strall1:=str1;
strall2:=str2;
strall3:=str3;
GoToXY(X,Y);
TextColor(Black);
TextBackground(White);
write(str1);
TextColor(White);
TextBackground(Black);
write(str2);
repeat
key:=readkey;
if key=chr(0) then
key:=readkey;
if key=chr(80) then
Menu80;
if key=chr(72) then
Menu72;
if key=chr(13) then
CucleEnd:=true;
until CucleEnd=true;
Menu:=Choose;
end;
 
Function Menu80;
begin
case (CurrStr) of
2:
begin
TextColor(White);
TextBackgroud(Black);
write(strall2);
CurrStr:=CurrStr-1;
TextColor(Black);
TextBackgroud(White);
write(strall1);
end;
3:
begin
TextColor(White);
TextBackgroud(Black);
write(strall3);
CurrStr:=CurrStr-1;
TextColor(Black);
TextBackgroud(White);
write(strall2);
end;
end;
end;
 
Function Menu72;
begin
case (CurrStr) of
1:
begin
TextColor(White);
TextBackgroud(Black);
write(strall1);
CurrStr:=CurrStr+1;
TextColor(Black);
TextBackgroud(White;);
write(strall2);
end;
2:
begin
TextColor(White);
TextBackgroud(Black);
write(strall2);
CurrStr:=CurrStr+1;
TextColor(Black);
TextBackgroud(White);
write(strall3);
end;
end;
end;
 
end.

Помогите плиз
У меня выдает ошибку “Syntax Error, “:” expected but “;” found
Хотя после процедуры “:” ставить не надо.
В чем проблема?

Чуть не забыл. Ошибку выдает в 52 строчке

key:=Readkey;
if key=#0 then
key:=Readkey;
if key=#80 then
Menu80;
if key=#72 then

Полезно ли:

8   голосов , оценка 4.000 из 5

может кто-нибудь сказать мне, где ошибка из-за того, что я не могу скомпилировать программу? Спасибо. Это описание ошибки:

Compiling main.pas
main.pas(4,1) Error: Illegal expression
main.pas(4,6) Fatal: Syntax error, ";" expected but "identifier A" found
Fatal: Compilation aborted
Error: /usr/bin/ppcx64 returned an error exitcode (normal if you did not specify a source file to be compiled)

Исходный код программы:

    program Hello;
begin

type a = array [1..6] of integer;
integer a : array;

a[1]:=2;
a[2]:=6;
a[3]:=4;
a[4]:=2;
a[5]:=4;
a[6]:=3;

n:=6;

x:=a[1];

for i:=2 to 6 do
begin
{
  if (a[i-1]>=x) then
  begin
  a[i]:=a[i] - x div 2;
  end;
  else 
  begin
  a[i]:=a[i] + x;
  x:= x + mod x(a[i] + 1);
  end;
}
end;


  writeln (a[i]);
end.

    ```

изменён 17 янв в 3:12

Из-за синтаксической ошибки в тексте модуля Pascal неполный исходный код не мог быть сгенерирован полностью

blami

3 9151 золотой значок13 серебряных значков19 бронзовых знаков

задан 17 янв в 2:50

Из-за синтаксической ошибки в тексте модуля Pascal неполный исходный код не мог быть сгенерирован полностью

0

Компилятор жалуется на неожиданный токен.

Первая проблема заключается в том, что ключевое слово beginнеуместно (как указал Лорен Пехтель), и компилятор обрабатывает определение вашего типа и объявление переменных как код. beginдолжно быть там, где начинается логика вашей программы. См. Это руководство, чтобы понять структуру программы TurboPascal.

Другая проблема заключается в определении типа массива. Сначала вам нужно создать тип и назвать его с помощью идентификатора ( hexadв моем примере ниже). Затем этот идентификатор становится именем типа, integerчтобы вы могли использовать его для дальнейших varобъявлений. Вот еще один учебник по типам массивов TurboPascal.

type
   hexad = array [1..6] of integer;

а затем вы можете объявить переменную этого типа ( hexadв моем случае):

var
   a: hexad;

Обратите внимание, что у вас может быть больше типов, определенных в ключевом слове, typeи больше переменных в ключевом слове, varпоэтому рекомендуется хранить их в отдельных строках и определениях типов отступов и объявлениях переменных.

Создан 17 янв.

Из-за синтаксической ошибки в тексте модуля Pascal неполный исходный код не мог быть сгенерирован полностью

blamiblami

3 9151 золотой значок13 серебряных значков19 бронзовых знаков

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

Не верьте сообщениям компилятора об ошибках, они часто говорят вещи, которые вообще не связаны с ошибкой. Тем не менее , очень хорошо указать, где находится ошибка (кроме случаев, когда вам не удалось что-то закрыть, тогда это может быть сумасшедшим.)

Создан 17 янв.

Из-за синтаксической ошибки в тексте модуля Pascal неполный исходный код не мог быть сгенерирован полностью

Лорен ПехтельЛорен Пехтель

8 5973 золотых значка28 серебряных значков45 бронзовых знаков

Артем235

0 / 0 / 0

Регистрация: 05.08.2019

Сообщений: 10

05.08.2019, 14:53

 [ТС]

10

Sun Serega, за идею с System.Console спасибо, буду пользоваться.
Переустанавливал с официального сайта и, что любопытно, при проверке возможности обновления было выведено следующее сообщение: “Обнаружена новая версия программы: 3.5.0.2220. Установленная версия: 3.5.0.2221”. Тем не менее, обновление я сделал.
Ну, и, наконец, по поводу полного текста программы.
Идея состоит в том, чтобы взять музыкальный файл MP3 (совершенно любой, пробовал несколько), поместить его в код программы и сделать возможным создание программой этого же музыкального файла буквально из ниоткуда.
Для осуществления затеи сделал следующее:
1. Подготовил код в Pascal для осуществления преобразования текстового содержимого MP3-файла в непосредственно файл, создаваемый программой:

Pascal
1
2
3
4
5
6
begin
var f:='';
WriteAllText('Файл.txt',f);
RenameFile('Файл.txt','Файл.mp3');
exec('Файл.mp3')
end.

2. Открыл MP3-файл с помощью блокнота, скопировал всё содержимое и вставил в среду разработки Pascal между кавычками в строке var f:='';
3. Обнаружил 2 проблемы:
1) Апострофы в содержимом MP3-файла воспринимаются Pascal как прерывание описания переменной f;
2) Перенос строки в содержимом MP3-файла не может быть передан в Pascal с помощью простого копирования, поскольку переносит строку в самом редакторе, но не в файле и, к тому же, полностью игнорируются последующие строки из-за отсутствия связующих знаков '+{перенос}'.
Для решения проблем открыл всё содержимое program1.pas в редакторе Notepad++ (сам Pascal на данном этапе зависает и не совсем корректно распознаёт перенос строки \r\n). Провёл следующие операции:
1) Удвоил все апострофы (‘ –> ”);
2) Сделал замену переноса строки: \r\n –> ‘+\r\n#13#10+’ (здесь \r\n во второй раз нужен во избежание образования единой строки на 8,5 миллионов символов).
3) Полученный код обратно отправил в среду разработки Pascal, предварительно убрав ненужные '+#13#10+'
Итоговый код прилагать, на мой взгляд, не имеет смысла, поскольку смысловая часть была описана выше, а всё то, что находится между кавычками, для человека не несёт никакой смысловой нагрузки. Стоит сказать лишь, что первоначальные ошибки были полностью устранены, что подтверждается и цветовым оформлением кода внутри IDE.
Итоговый результат и вызвал ошибку, из-за которой была создана тема: компилятор не обнаруживает никаких ошибок в программе (т.е. с синтаксической точки зрения полный порядок), но все 40000 строк отказываются каким-либо образом им восприниматься, выводится сообщение “Компиляция прошла успешно (0 строк)”, а попытка открыть программу с помощью SHIFT+F9 приводит к появлению сообщения о том, что некий файл не найден, программа аварийно завершается.



0



Окно Call Stack – что это такое?

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

Да и не нужно этого держать в голове. Для этого существует такое средство, как “Call Stack” (вызывается из меню “Debug -&gt; Call Stack” или просто Ctrl+F3). Например, пусть наша программа имеет вид:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function fact(n: longint): longint;
begin
  if n = 0 then fact := 1
  else fact := n * fact(n - 1);
end;
 
function b(n: longint): integer;
begin
  b := 2 * fact(n);
end;
 
begin
  writeln( b(10) );
end.

Если начать выполнять ее пошагово, очень скоро можно запутаться в том, что именно сейчас выполняется (факториал какого числа вычисляется в данный момент, к примеру), и что еще осталось НЕзавершенным. А если программа будет в 10 раз длиннее, и будет содержать не 2, а 10 процедур/функций? В таком случае достаточно вызвать окно “Call Stack” (способ вызова – выше), и посмотреть, что именно в данный момент выполняется (то есть находится на вершине стека вызовов), и что еще выполняться будет (находится ниже в списке), вплоть до Program, обозначающего, самый нижний уровень – основную программу…

Вот, например, в данном случае: выполняется функция вычисление факториала 8, которая вызвана из нижестоящей в списке функции вычисления факториала 9, которая в свою очередь… Ну, дальше все понятно… При продолжении пошагового выполнения этой программы в окно “Call Stack” будут добавляться новые и новые вызовы Fact(7), Fact(6), … до Fact(0); потом рекурсия начнет раскручиваться обратно…

Как пользоваться отладчиком

Кстати, “Call Stack” – незаменимый помощник именно при работе с рекурсивными подпрограммами, поскольку дает возможность контролировать последовательность вызовов рекурсивной функции, и на ранней стадии определить, например, бесконечную рекурсию…

Например, здесь – совершенно очевидно, что рекурсивная функция оформлена неверно (отсутствует ветка Else), сразу после того, как в окне “Call Stack” появились вызовы f(-1) и f(-2)…

Как пользоваться отладчиком

Еще одно полезное применение окна Call Stack – если вы случайно начали трассировку кода, который хотели бы выполнить за один шаг. В стеке вызовов вы можете найти тот вызов, который начали трассировать по ошибке, затем выбрать команду Run to Cursor, чтобы выполнить за один шаг остальную часть вызова.

Что такое точки останова программы?

Кроме всех вышеперечисленных возможностей, значительно облегчающих жизнь программисту, в IDE Паскаля встроено еще одно средство, очень мощное и эффективное (при правильном использовании)… Это – работа с точками останова программы (BreakPoints).

Точка останова – это обозначенная в коде программы позиция, в которой вы хотите прекратить выполнение программы и вернуть выполнение отладчику. В этом смысле точка останова работает аналогично команде GoTo Cursor, при которой программа выполняется обычным путем до достижения определенной точки. Основное различие состоит в том, что вы можете задать несколько точек останова и точки останова, которые будут срабатывать не при каждом их достижении.

Допустим, есть следующая программа:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const
  parameter = 10;
 
function f(x: integer): integer;
begin
  f := 10 * parameter - sqr(x);
end;
 
var
  i, j: integer;
  arr: array[1 .. 20] of real;
begin
  for i := 1 to 20 do begin
    j := f(i);
    arr[i] := (15 * j / parameter) + i / j - 8;
  end;
  { ... }
end.

(не обольщайтесь, программа может быть не в 17, а в 1700 строк длиной, и функция f может быть гораздо более сложной, так же как и способ ее вызова)… Естественно, запустив эту программу, получаем:

Runtime error 200 at 0006:0004.

, из чего заключаем, что где-то в программе происходит деление на 0. Ну, где оно происходит, понятно. А вот на какой итерации? Чему равно i, при котором происходит эта ошибка? Можно, конечно, воспользоваться старым и проверенным способом, и сделать так:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const
  parameter = 10;
 
function f(x: integer): integer;
begin
  f := 10 * parameter - sqr(x);
end;
 
var
  i, j: integer;
  arr: array[1 .. 20] of real;
begin
  for i := 1 to 20 do begin
    j := f(i);
    writeln('j = ', j);
    arr[i] := (15 * j / parameter) + i / j - 8;
  end;
  { ... }
end.

, после чего нам будут распечатаны все значения j, для которых программа отработала нормально, и еще одно, при котором как раз и произошло “Деление на Ноль”. Но для этого нужно вносить изменения в программу. А можно обойтись без её изменений… Используя точку останова…

Для этого проделаем следующее… Во-первых, добавим переменную i в список “Watches”, так как нам нужно найти именно “при каком i программа вылетает”.

Далее – установим курсор на той строке программы, где происходит деление, и выберем в меню пункт “Debug -> Add Breakpoint…” Экран примет вид, показанный на снимке ниже.

Примечание: строка, на которую устанавливается BreakPoint, должна содержать выполняемый код и не может быть комментарием, описанием или пустой строкой…

Как пользоваться отладчиком

В поле Condition внесем условие, при котором следует остановить программу (условие вводится так же как и при использовании условных операторов в программе, только If здесь присутствовать не должно), и подтверждаем установку BreakPoint-а нажатием кнопки “Ok”:

Как пользоваться отладчиком

Строка, в которой установлен хотя бы один BreakPoint (а устанавливать можно несколько точек останова для программы, причем даже на одной строке, но с разными условиями, может быть установлено более одного BreakPoint-а) меняет цвет на красный…

Если теперь запустить программу (обычным способом – через Ctrl+F9, или пошагово, не имеет значения), то как только значение j в выделенной строке станет равным 0, прогон программы будет приостановлен с выдачей вот такого сообщения:

Как пользоваться отладчиком

Как видим (в окне Watches), происходит это при i = 10… Что и требовалось определить…

Чтобы просмотреть, какие BreakPoint-ы были установлены в программе, достаточно зайти в меню “Debug -&gt; BreakPoints”, и будет выведен список всех точек останова для данной программы:

Как пользоваться отладчиком

Нажатием на “Clear All” можно удалить все точки останова сразу, “Delete” удалит только подсвеченный BreakPoint, а “Edit”-ом можно отредактировать текущий (подсвеченный) BreakPoint – подкорректировать условие, поменять номер строки, в которой должна производиться проверка, изменить счетчик числа проходов (задание для точки останова счетчика проходов сообщает отладчику, что останавливать программу нужно не при каждом достижении точки останова, а только на n-ый раз. То есть, если счетчик проходов равен 3, то отладчик останавливает программу только при третьем достижении данной точки останова) и т.д.

Поиск нужного места

IDE предусматривает два способа поиска в программе заданного места. Простейший способ предоставляет команда Find Procedure (Поиск процедуры) из меню Search. Эта команда запрашивает у Вас имя процедуры или функции, затем находит соответствующую строку в файле, где определяется эта подпрограмма. Этот подход полезно использовать при редактировании, но его можно комбинировать с возможностью выполнения программы до определенной точки, чтобы пройти программу до той части кода, которую вы хотите отладить.

Повторное выполнение (сброс программы)

В ходе сеанса отладки иногда желательно начать все сначала. Выберите команду “Run -&gt; Reset Program” или нажмите клавиши Ctrl+F2. Это приведет к полному сбросу, так что выполнение по шагам, или трассировка начнется в начале основной программы.

Отслеживание вывода программы

При выполнении программы по шагам часто полезно просмотреть вывод программы, называемый экраном пользователя. IDE предоставляет несколько способов просмотра экрана пользователя.

  1. Переключение экранов
    В любой момент сеанса отладки вы можете выполнять переключение экрана IDE и экрана пользователя. Чтобы вывести экран пользователя, нажмите клавиши Alt+F5. Чтобы вернуться в IDE, нажмите любую клавишу или щелкните “мышью”.



9



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

Среда Турбо Паскаля дает исчерпывающую информацию о характере и месте
обнаруженной компилятором ошибки. При обнаружении ошибки среда автоматически
загружает в окно редактора исходный файл и помещает курсор около того места, где
в исходном тексте обнаружена ошибка. При этом в верхней строке редактора
появляется диагностическое сообщение. После нажатия на любую клавишу (кроме FI)
верхняя строка восстанавливает свой первоначальный вид и среда переходит к
режиму редактирования. Если после появления сообщения об ошибке нажать F1, на
экране появится окно справочной службы с детальной информацией об ошибке и
рекомендациями по ее устранению. Некоторые ошибки в исходном тексте
обнаруживаются не сразу, а в ходе продолжающегося контекстного разбора.
Например, несоответствие типов в операторе присваивания не может быть обнаружено
до тех пор, пока не будет вычислено целиком выражение в правой части этого
оператора. В таких случаях ищите ошибку слева от курсора или в предыдущей строке
текста.

Ниже приводятся сообщения об ошибках в том виде, в каком они появляются в
верхней строке редактора, а также перевод сообщений справочной службы.

На экране после кода ошибки (цифры) нет точки, поэтому ее нет и в
соответствующем месте текста.

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

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

  • если в опции COMPILE/DESTINATION установлено значение MEMORY, замените эту
    опцию на DISK;
  • если в опции OPTIONS/LINKER/LINK BUFFER установлено значение MEMORY,
    замените эту опцию т DISK;
  • если Вы используете резидентные обслуживающие программы, такие как
    SIDEKICK, NORTON, удалите их из памяти;
  • если Вы используете интегрированную среду TVRBO.EXE, то попробуйте
    воспользоваться компилятором ТРС.ЕХЕ – он занимает меньше памяти.

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

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

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

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

Этот идентификатор не был
описан.

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

Попытка дважды описать один и
тот же идентификатор.

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

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

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

Синтаксис
констант вещественного типа описан в гл.4.

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

Синтаксис констант целого типа описан в гл.4. Учтите, что после целых
действительных чисел, превышающих диапазон представления целых чисел
(-2147483648..+2147483647), должны ставиться точка и ноль, например,
12345678912.0.

8 String constant exceeds line (Строковая константа превышает допустимые
размеры).

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

9 Too many nested files (Слишком много вложенных файлов).

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

10 Unexpected end of file (He найден конец файла).

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

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

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

Максимальная длина строки, обрабатываемой компилятором, равна 126 символам
(обратите внимание: редактор среды может обрабатывать строки практически
неограниченной длины).

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

Не указан тип
идентификатора.

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

Появление этой ошибки означает, что конфигурационный файл CONFIG.SYS
операционной системы не включает параметр FlLES=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 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 (Компонентами файла не могут быть файлы)
.

Конструкции типа file of file (файл файлов) или file of object (файл
объектов) не допускаются. Нельзя объявлять любые структурные типы, которые
используют в качестве компонентов объекты или файлы.

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 Tуре 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 (Типы операндов не соответствуют
операции).

Данная операция не может быть применена к указанным операндам, например, ‘ А’
div ‘ 2 ‘ .

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

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

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

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

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

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

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

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

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

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

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

Возможные причины
сообщения:

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

60 Too many procedures (Слишком иного процедур).

Турбо Паскаль допускает не более 512 процедур или функций в одном модуле.
Если Вы компилируете программу, то поместите некоторые процедуры или функции в
модули. Если Вы компилируете модуль, то разбейте его на два или несколько
модулей.

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 A;      
Unit В;

Uses В;      
Uses А; 

…..        
…..

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

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

70 Unit version mismatch (Несоответствие версий модулей).

Один или несколько программных модулей, используемых данной программой, были
изменены после их компиляции. Воспользуйтесь опцией COMPILE/MAKE или
COMPILE/BUILD в интегрированной среде или опциями /М или /В в компиляторе ТРС,
что позволит автоматически скомпилировать программные модули, нуждающиеся в
перекомпиляции.

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

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

72 Unit file format error (Ошибка формата файла модуля). 

Файл .TPU не
соответствует стандарту Турбо Паскаля.

73 IMPLEMENTATION expected (Отсутствует исполняемая часть модуля).

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.

80 Label not within current block (Метка не находится внутри текущего блока)
.

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

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

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

82 Undefined label in processing statement part (Неопределенная метка в
предшествующем разделе операторов).

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

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

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

84 Unit 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 (Нужно указать»..») .

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

Нарушены следующие ограничения:

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

97 Invalid FOR control variable(Неправильный параметр цикла оператора
FOR).

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

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

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

99 File and procedure types 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 (Предшествующее выражение должно иметь
символьный тип).

107 Too many relocation items (Слишком много перемещаемых Элементов).

Размер таблицы перемещения файла .ЕХЕ превышает 64 Кбайта, что является
верхним пределом в Турбо Паскале. Если Вы обнаружили эту ошибку, то это значит,
что программа просто слишком велика для обработки компоновщиком Турбо Паскаля.
Возможно также, что она слишком велика для выполнения в MS-DOS. В таком случае
нужно выделить в программе основной раздел, который выполнял бы обращение к двум
или более вспомогательным разделам с помощью процедуры ЕХЕС из модуля DOS (см.
гл.11).

108 Overflow in arithmetic operator (Переполнение при выполнении
арифметического оператора).

Результат предыдущей арифметической операции не лежит в диапазоне -2 146 483
648…+2 147 483 647. Исправьте операцию или используйте вещественные типы
вместо целочисленных.

109 No enclosing FOR, WHILE or REPEAT statment (Нет операторов, заканчивающих
операторы FOR, WHILE или REPEAT) .

Процедуры BREAK и CONTINUE не могут вызываться вне тела оператора цикла.

110 Debug information table overflow (Переполнение информационной таблицы
отладки).

Возможно, программа содержит более 65536 имен или 65536 строк. Отключите
генерацию таблиц отладки директивой компилятора {$D-} или исправьте один или
более модулей.

111

Ошибка с этим кодом не описана в версии 7.0 системы Турбо Паскаль.

112 CASE constant out of range(Константа CASE нарушает допустимые границы).

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

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

Данный символ не может быть
первым символом в операторе.

114 Cannot call an interrupt procedure (Невозможно вызвать процедуру
прерывания) .

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

115

Ошибка с этим кодом не описана в версии 7.0 системы Турбо Паскаль.

116 Must be in 8087 mode to compile this (Для компиляции необходим режим
8087) .

Данная программа может быть скомпилирована только в режиме {$N+}. В состоянии
{SN-} операции с типами SINGLE, DOUBLE, EXTENDED и СОМР не допускаются.

117 Target address not found (Указанный адрес не найден).

Команда COMPILE/FIND ERROR в среде Турбо Паскаля (или поиск с помощью опции
/F в командной строке компилятора ТРС.ЕХЕ) не обнаружила оператор,
соответствующий заданному адресу.

118 Include files are not allowed here (Здесь не допускаются включаемые
файлы) .

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

119 No inherited methods are accessible here (В этом месте программы нет
унаследованных методов).

Вы используете зарезервированное слово INHERITED вне метода объекта или в
методе, который не унаследован от родительского объекта.

120

Ошибка с этим кодом не описана в версии 7.0 системы Турбо Паскаль. .

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

Возможные причины сообщения:

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

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

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

123 Too many symbols'(Слишком много символов) .

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

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

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

125

Ошибка с этим кодом не описана в версии 7.0 системы Турбо Паскаль.

126 Files must be var parameters (Файлы должны передаваться как
параметры-переменные) .

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

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 являются недействительными. Турбо Паскаль требует нуля или более
идентификаторов, разделенных пробелами, запятыми или точками с запятой.

131 Header does not match previous definition (Заголовок не соответствует
предыдущему определению). 

Возможные причины сообщения:

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

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

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

133 Cannot evaluate this expression (Нельзя вычислить данное выражение).

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

134 Expression incorrectly terminated (Некорректное завершение выражения). 

Контекстуально в данном месте программы должен быть конец выражения или
оператора.

135 Invalid format specifier (Неверный спецификатор формата). 

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

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

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

137 Structured variable are not allowed here (Здесь нельзя использовать
переменную структурного типа).

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

138 Cannot evaluate without System unit (Нельзя вычислить выражение без
модуля SYSTEM).

Чтобы отладчик смог вычислить выражение, в файле TURBO.TPL должен содержаться
модуль SYSTEM.

139 Cannot access this symbol (Нет доступа к данному символу). 

Как только Вы
скомпилируете программу, все множество ее символов становится доступным. Однако
к отдельным символам (например, к переменным) нельзя получить доступ, пока Вы не
запустите программу.

140 Invalid floating-point operation (Недопустимая операция с плавающей
запятой) .

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

141 Cannot compile overlay to memory (Нельзя выполнить компиляцию оверлейных
модулей в память).

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

142 Procedure or function variable expected (Должна использоваться переменная
процедурного типа).

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

143 Invalid procedure or function reference (Недопустимая ссылка на процедуру
или функцию).

Возможные причины сообщения:

  • Вы пытаетесь вызвать процедуру в выражении;
  • процедура или функция, использующаяся в качестве параметра вызова другой
    процедуры или функции, должна компилироваться в состоянии {$F+} и не может
    описываться с помощью зарезервированных слов INLINE или
    INTERRUPT.

144 Cannot overlay this unit (Этот модуль не может использоваться в качестве
оверлейного).

Попытка использовать в качестве оверлейного модуль, который не был
скомпилирован с директивой {$O+}.

145 Too many nested scopes (Слишком много вложений).

В программе не может быть больше 512 вложений с не более чем 128 вложениями в
каждом модуле. Вложениями считаются:

  • каждый модуль в предложении
    USES;
  • каждая вложенная запись в типе
    RECORD;
  • каждый вложенный оператор
    WITH.

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).

Оглавление | Дальше

Читайте также:  Jungheinrich Fault Codes

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *