Error unit1 pas 62 missing operator or semicolon

Ошибка "Missing operator or semicolon" Delphi Решение и ответ на вопрос 1441253
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;
 
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Button3: TButton;
    Button4: TButton;
    procedure Form1Create(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Stringgrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
   mas: Array[0..9, 0..9] of Integer ;
implementation
 
{$R *.dfm}
 
function regKey(st: String):boolean;
//1-1-1-1-2-2-2-2
var len,ind: integer;
key:char;
begin
len:=Length(st);
if len=0 then begin MessageDlg('Введите ключ',mtError,mbOKCancel, 0); Result:=false; end
else
  begin
if len <> 15 then
  begin
  for ind:=1 to 15 do
    if ind mod 2 = 0 then
      begin
        key:=st[ind];
        if key<>'-' then
        begin
          MessageDlg('Неверный ключ',mtError,mbOKCancel, 0);
          Result:=false;
          break;
        end;
      end
    else
      if ind mod 2 = 1 then
        begin
          key:=st[ind];
        if not(key in ['0'..'9']) then
        begin
          MessageDlg('Неверный ключ',mtError,mbOKCancel, 0);
          Result:=false;
          break;
        end;
        end
      else Result:=false
  end
else Result:=true;
end;
end;
 
function BoolToStr(const value : boolean) : string;
begin
   if value then Result := 'True' else Result := 'False';
end;
 
procedure TForm1.Form1Create(Sender: TObject);
begin
// Количество столбцов и срок  StringGridа  приведем к 10-ти 
 With StringGrid1 do
begin
 ColCount:=8;
 RowCount:=8;
 end;
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
begin
// Присваивание элементам массива  значение 1
 
for i:=0 to 7 do
for j:=0 to 7 do
 mas[i,j]:=1;
 
 // Присваивание элементам массива  значение 0
 
 mas[3,2]:=0;
 mas[4,2]:=0;
 mas[5,2]:=0;
 mas[3,3]:=0;
 mas[3,4]:=0;
 mas[3,5]:=0;
// Присваивание ячейкам StringGrid1 значений элементов массива  mas[i,j]
for i:=0 to 7 do
begin
for j:=0 to 7 do
begin
 StringGrid1.Cells[i,j]:=IntToStr(mas[i,j]);
 
end;
end;
 
 
end;
procedure TForm1.Stringgrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
With StringGrid1 do
begin
//Если значение ячейки не равно ' ' (ячейка не пустая ) и значение ячейки  равно 1 то 
  if (Cells[ACol,ARow]<>'') and (StrToInt(Cells[ACol,ARow])=1) then
begin
//Красим ячейку белым
Canvas.Brush.Color:=clwhite;
Canvas.FillRect(Rect);
end
else
//Если значение ячейки не равно ' ' (ячейка не пустая ) и значение ячейки  равно 0 то 
 
if (Cells[ACol,ARow]<>'') and (StrToInt(Cells[ACol,ARow])=0) then
begin
//Красим ячейку церным
Canvas.Brush.Color:=clblack;
Canvas.FillRect(Rect);
end
// В остальных случаях оставляем цвета как есть ( As clWindow)
else
begin
Canvas.Brush.Color:=clWindow;
Canvas.FillRect(Rect);
end;
end;
 
end;
 
 
procedure TForm1.Button2Click(Sender: TObject);
var
i,j:integer;
begin
// Присваивание элементам массива  значение 1
 
for i:=0 to 7 do
for j:=0 to 7 do
 mas[i,j]:=1;
 
 // Присваивание элементам массива  значение 0
 
 mas[3,2]:=0;
 mas[4,2]:=0;
 mas[5,2]:=0;
 mas[3,3]:=0;
 mas[3,4]:=0;
 mas[3,5]:=0;
 mas[3,3]:=0;
 mas[5,4]:=0;
 mas[5,3]:=0;
 mas[5,5]:=0;
 mas[4,4]:=0;
// Присваивание ячейкам StringGrid1 значений элементов массива  mas[i,j]
for i:=0 to 7 do
for j:=0 to 7 do
 StringGrid1.Cells[i,j]:=IntToStr(mas[i,j]);
end;
 
procedure TForm1.Button3Click(Sender: TObject);
var
ed1: integer;
i,j,l,k:integer;
str: String;
begin
str:= Edit1.Text;
l:=Length(str);
 
for i:=0 to 7 do
begin
k:=1;
for j:=0 to 7 do
begin
ed1:=StrToInt(str[k]);
 mas[i,j]:=mas[i+ed1,j];
 for l:=7-ed1 to 7 do
 mas[l+ed1,j]:=1;
 k:=k+2;
end;
end;
 
 
for i:=0 to 7 do
for j:=0 to 7 do
 StringGrid1.Cells[i,j]:=IntToStr(mas[i,j]);
end;
 
procedure TForm1.Button4Click(Sender: TObject);
var b: boolean;
str:string;
begin
b:=regKey(Edit1.Text);
str:=BoolToStr(b);
MessageDlg(str,mtConfirmation,mbOKCancel, 0);
end;
 
end.

 
den74 ©
 
(2004-04-06 11:55)
[0]

Доброго время суток,

У меня вот еаеая проблема. Беруи  из хелпа пример работы с DateToStr: Label1.Caption := «Today is  » + DateToStr(Date);
При компиляции выдает сообщение об ошибке:
[Error] Unit1.pas(274): Missing operator or semicolon

Спасибо


 
Anatoly Podgoretsky ©
 
(2004-04-06 11:59)
[1]

Ошибка не здесь, приводи больше кода, тот который выше


 
[lamer]Barmaglot ©
 
(2004-04-06 11:59)
[2]

плохо скопировал, скопируй еще раз, все работает

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := «Today is  » + DateToStr(Date);
end;


 
Developerr ©
 
(2004-04-06 12:04)
[3]

Что именно в этой строке????

> Label1.Caption := «Today is  » + DateToStr(Date);

Здесь все в порядке. Посмотри внимательно все ли у тебя begin»ы и end»ы


 
den74 ©
 
(2004-04-06 12:06)
[4]

Все проверял, убираю эту строку пробле нет


 
Anatoly Podgoretsky ©
 
(2004-04-06 12:09)
[5]

Ну ладно, мы можем подождать, когда ты приведешь более подробный код, но сильно с этим не тяни, ветка уйдет в архив


 
Developerr ©
 
(2004-04-06 12:10)
[6]

Ты, что шутишь или Где? Ну напиши вместо этой строки
Label1.Caption := «Today is  » + DateToStr(Date);

например, ShowMessage(«Работает :-)»);
Если и это не сработает тогда проблема с Delphi, вероятно.


 
Anatoly Podgoretsky ©
 
(2004-04-06 12:14)
[7]

Только не с Дельфи, что за привычка все валить на разработчиков Дельфи, есть более достойные кандидаты.


 
Developerr ©
 
(2004-04-06 12:17)
[8]


> Anatoly Podgoretsky ©

Согласен, я имею в виду не проблематичность Delphi, а возможно просто кривопоставленную версию, либо сломанную некорректно. Либо у того кто ставил руки не из… ну в общем понятно


 
KapitanSerg ©
 
(2004-04-06 12:18)
[9]

А какой тип переменной Date?


 
Anatoly Podgoretsky ©
 
(2004-04-06 12:18)
[10]

Я поверю, что сломана клавиатура, а в другое нет.


 
Nous Mellon ©
 
(2004-04-06 13:28)
[11]

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


 
Владислав ©
 
(2004-04-06 13:35)
[12]

Да все правильно :)

Вот пример:

procedure TForm1.FormCreate(Sender: TObject);
begin
 Label2.Caption := "Today is  " + DateToStr(Date)
 Label1.Caption := "Today is  " + DateToStr(Date);end;

Если закомментировать строку, выделенную жырным, то ошибки не будет :)


 
Владислав ©
 
(2004-04-06 13:36)
[13]

Криво получилось…

procedure TForm1.FormCreate(Sender: TObject);
begin
 Label2.Caption := "Today is  " + DateToStr(Date)
 Label1.Caption := "Today is  " + DateToStr(Date);
end;


 
KapitanSerg ©
 
(2004-04-06 13:39)
[14]

>Владислав ©   (06.04.04 13:35) [12]
Конечно ПРАВ!!!!
Здесь, как видно, собрались одни спецы, которые, как известно, подобны флюсу…


Содержание

  1. Error unit1 pas 51 missing operator or semicolon
  2. Error unit1 pas 51 missing operator or semicolon
  3. Компиляция и исправление синтаксических ошибок
  4. Запуск программы.
  5. Отладка программы и исправление логических ошибок.

Error unit1 pas 51 missing operator or semicolon

Вот, другое дело, теперь более менее приятно смотреть.

Соответственно, если не задать значение, то появиться ошибка.

Тип Double/Float/Extended/Real несовместим с типом Int из-за запятой, соответственно всё это дело надо перевести в тип Int предварительно округлив значение до целого числа с помощью функции round(X: Real);

Без инициализации процедуры Randomize, функция Random бессполезна.

Где оператор end ?!

З.Ы.: Встроенный дебаггер для чего? Используем F7, F8 — выявляем где ошибочки.

Придерживаться нормам синтаксиса не учили? Самому не впадлу читать подобную «ахинею»?

Цитата:
Missing operator or semicolon
Пропущен оператор, или точка с запятой («;»).

Это я прекрасно понимаю! Я никак немогу понять, где в коде есть эта ошибка?

Вот, другое дело, теперь более менее приятно смотреть.

Соответственно, если не задать значение, то появиться ошибка.

Тип Double/Float/Extended/Real несовместим с типом Int из-за запятой, соответственно всё это дело надо перевести в тип Int предварительно округлив значение до целого числа с помощью функции round(X: Real);

Без инициализации процедуры Randomize, функция Random бессполезна.

Во-первых и во-вторых:
Если бы была ошибка по этому поводу, то она была бы по несовместимости типов Extended и Integer.
Я не дурак и про то, что десятичная дробь отлична от целого числа, я знаю, но в strtofloat я ошибся.
Да, кстати, функция random существует в 2 видах: с аргументом типа integer, возвращающая значение integer, и вообще без аргументов, возвращающая значение типа extended.

Не правда!
Функция Random работает и без Randomize, но хуже. Randomize предаёт рандому более «разбросанный» вид.

Вообще-то, если нету begin-а, то и end-а тоже не надо! Читайте документацию по pascal-ю.

З.Ы.: Встроенный дебаггер для чего? Используем F7, F8 — выявляем где ошибочки.

И как вы себе это представляете?? Даже если я и расставлю breakpoint-ы, то из за ошибок в коде программа не запустится!
Отладка может происходить только в процессе работы программы!

Ну вобщем, спасибо вам всем за всё, но проблема то была совсем явной: я создал тип

Источник

Error unit1 pas 51 missing operator or semicolon

Вот, другое дело, теперь более менее приятно смотреть.

Соответственно, если не задать значение, то появиться ошибка.

Тип Double/Float/Extended/Real несовместим с типом Int из-за запятой, соответственно всё это дело надо перевести в тип Int предварительно округлив значение до целого числа с помощью функции round(X: Real);

Без инициализации процедуры Randomize, функция Random бессполезна.

Где оператор end ?!

З.Ы.: Встроенный дебаггер для чего? Используем F7, F8 — выявляем где ошибочки.

Придерживаться нормам синтаксиса не учили? Самому не впадлу читать подобную «ахинею»?

Цитата:
Missing operator or semicolon
Пропущен оператор, или точка с запятой («;»).

Это я прекрасно понимаю! Я никак немогу понять, где в коде есть эта ошибка?

Вот, другое дело, теперь более менее приятно смотреть.

Соответственно, если не задать значение, то появиться ошибка.

Тип Double/Float/Extended/Real несовместим с типом Int из-за запятой, соответственно всё это дело надо перевести в тип Int предварительно округлив значение до целого числа с помощью функции round(X: Real);

Без инициализации процедуры Randomize, функция Random бессполезна.

Во-первых и во-вторых:
Если бы была ошибка по этому поводу, то она была бы по несовместимости типов Extended и Integer.
Я не дурак и про то, что десятичная дробь отлична от целого числа, я знаю, но в strtofloat я ошибся.
Да, кстати, функция random существует в 2 видах: с аргументом типа integer, возвращающая значение integer, и вообще без аргументов, возвращающая значение типа extended.

Не правда!
Функция Random работает и без Randomize, но хуже. Randomize предаёт рандому более «разбросанный» вид.

Вообще-то, если нету begin-а, то и end-а тоже не надо! Читайте документацию по pascal-ю.

З.Ы.: Встроенный дебаггер для чего? Используем F7, F8 — выявляем где ошибочки.

И как вы себе это представляете?? Даже если я и расставлю breakpoint-ы, то из за ошибок в коде программа не запустится!
Отладка может происходить только в процессе работы программы!

Ну вобщем, спасибо вам всем за всё, но проблема то была совсем явной: я создал тип

Источник

Компиляция и исправление синтаксических ошибок

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

Ошибки, которые могут быть в программе, принято делить на три группы:

ошибки времени выполнения;

Синтаксические ошибки, их также называют ошибками времени компиляции (Compile-time error), наиболее легко устранимы. Их обнаруживает компилятор, а программисту остается только внести изменения в текст программы и выполнить повторную компиляцию.

Наиболее часто встречающиеся синтаксические ошибки:

[Error] Unit1.pas(42): ‘:=’ expected but ‘=’ found – Вместо ожидаемого символа (или набора символов, например := в тексте программы встречается иное.

[Error] Unit1.pas(43) : Missing operator or semicolon – пропущена точка с запятой — ;

[Error] Unit1.pas(49) : Undeclared identifier: ‘x’ – Не объявленный идентификатор. Проверьте правильность имени идентификатора. Возможно вы пропустили какой-нибудь символ например x1.

[Error] Unit1.pas(57): ‘;’ expected but ‘.’ found – Неправильно составлены блоки заканчивающиеся на end. Часто ошибка встречается в циклах.

[Error] Unit1.pas(51): ‘)’ expected but ‘;’ found – Пропущена закрывающаяся скобка. Ошибка встречается при вызове методов, процедур или функций с параметрами. Внимательно проверьте количество открывающихся и закрывающихся скобок должно быть одинаковым.

Запуск программы.

Запуск программы можно выполнить непосредственно из Delphi, не завершая работу со средой разработки. Для этого нужно из меню Run выбрать команду Run или щелкнуть на соответствующей кнопке панели инструментов Debug ().

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

Отладка программы и исправление логических ошибок.

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

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

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

После возникновения ошибки программист может либо прервать выполнение программы, для этого надо из меню Run выбрать команду Program Reset , либо продолжить ее выполнение, например, по шагам (для этого из меню Run надо выбрать команду Step), наблюдая результат выполнения каждой инструкции.

Если программа запущена из Windows, то при возникновении ошибки на экране также появляется сообщение об ошибке, но тип ошибки (исключения) в сообщении не указывается. После щелчка на кнопке ОК программа, в которой проявилась ошибка, продолжает (если сможет) работу.

С алгоритмическими ошибками дело обстоит иначе. Компиляция программы, в которой есть алгоритмическая ошибка, завершается успешно. При пробных запусках программа ведет себя нормально, однако при анализе результата выясняется, что он неверный. Для того чтобы устранить алгоритмическую ошибку, приходится анализировать алгоритм, вручную «прокручивать» его выполнение.

Интегрированная среда разработки Delphi предоставляет программисту мощное средство поиска и устранения ошибок в программе — отладчик. Отладчик позволяет выполнять трассировку программы, наблюдать значения переменных, контролировать выводимые программой данные.

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

В случае неправильной работы программы необходимо видеть реальный порядок выполнения инструкций. Это можно сделать, выполнив трассировку программы. Трассировка — это процесс выполнения программы по шагам (step-by-step), инструкция за инструкцией. Во время трассировки программист дает команду: выполнить очередную инструкцию программы.

Delphi обеспечивает два режима трассировки: без захода в процедуру (Step over) и с заходом в процедуру (Trace into). Режим трассировки без захода в процедуру выполняет трассировку только главной процедуры, при этом трассировка подпрограмм не выполняется, вся подпрограмма выполняется за один шаг. В режиме трассировки с заходом в процедуру выполняется трассировка всей программы, т. е. по шагам выполняется не только главная программа, но и все подпрограммы.

Для того чтобы начать трассировку, необходимо из меню Run выбрать команду Step over или Trace into. В результате в окне редактора кода будет выделена первая инструкция программы. Для того чтобы выполнить выделенную инструкцию, необходимо из меню Run выбрать команду Step over (нажать клавишу ) или Trace into (нажать клавишу ). После выполнения инструкции будет выделена следующая. Таким образом, выбирая нужную команду из меню Run, можно выполнить трассировку программы. Активизировать и выполнить трассировку можно при помощи функциональной клавиатуры. Команде Step over соответствует клавиша , а команде Trace into — клавиша .

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

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

Для трассировки программы используем 3 отладочных окна. Call Stack – Стек вызовов. Отображает иерархию вызовов методов, процедур и функций. Watches – Окно в котором можно отобразить значения переменной во время трассировки. Local Variables – окно отображающее все локальные переменные. Активируем несколько окон отладчика, расположенные в меню View в группе Debug Windows.

При нажатии на Call Stack на экране появляется пустое окно с одноименным названием. Переместите его за заголовок в нижний левый угол окна редактора кода. Таким же образом добавьте окна Watches и Local Variables.

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

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

Для того чтобы во время выполнения программы по шагам иметь возможность контролировать значение переменной, нужно добавить имя этой переменной в список наблюдаемых элементов (Watch List). Для этого надо из меню Run выбрать команду Add Watch или в окне Watches из контекстного меню выбрать пункт Add Watch (Добавить наблюдаемый элемент) и в поле Expression появившегося диалогового окна Watch Properties (рисунок 1.18) ввести имя переменной.

В качестве наблюдаемого элемента можно указать поле объекта, например Edit1.text.

Запустите программу, заполните поля коэффициентов и нажмите на кнопку вычислить. Программа остановит свое выполнение на точке останова. Далее проведите трассировку программы. Следите за значениями в окнах отладки Watch List и Local Variables.

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

Источник

Типов сообщений компилятора — более двухсот. Рассмотрим перечень наиболее встречающихся сообщений класса Error

  • 0. <Что-то1> expected but <Что-то2> found. Обычно это сообщение возникает при синтаксической ошибке.Например,в случае небаланса скобок,компилятор сообщит: ‘)’ expected but ‘;’ found (вместо ожидавшейся скобки найдена запятая).

    Компилятор часто сообщает, что ‘end’ ожидается,например:x:= 5,7; здесь неуместен разделитель-запятая, а сообщается про end. (‘END’ expected but ‘,’ found)

  • 1. <Имя> is not a type identifier. Данное <Имя> не является именем типа.
  • 2. ‘;’ not allowed before ‘Else’. Перед else нельзя ставить точку с запятой
  • 3. Abstract method must be virtual or dynamic. Абстрактный метод должен быть виртуальным или динамическим.
  • 4. Ambiguous overloaded call to <Имя блока>. Компилятор не может однозначно выбрать перегружаемый блок. Измените параметр.
  • 5. Array type required. Ошибка возникает в случаях, когда в индексе элемента массива указано больше уровней, чем предусмотрено описанием, и если массив не описан. Например, после объявления двумерного массива х или простой переменной х ошибочно записывают элемент х[2,1,1] (в нем показано три измерения).
  • 6. Assignment to FOR-loop variable <Имя>. Присваивание значения параметру FOR-цикла в теле цикла.

    Например, вследствие описки дважды используется имя i в кратном цикле:

    For i:= 1 to n do For i:= 1 to m do ...
    
  • 7. Break or Continue outside of loop. Break или Continue — не в цикле.
  • 8. Cannot initialize local variables. Локальные переменные запрещено инициализировать (задавать им значения при описании).
  • 9. Cannot assign to/read a read-only/write-only property. Присвоение значения свойству read/only и чтение свойства write/only запрещены.
  • 10. Constant expression expected.В этом месте должна стоять константа или константное выражение, например константа выбора в структуре Case.
  • 11. Constant expression violates subrange bounds. Выход значения константы из диапазона. Контроль не полон. Например, «сойдет с рук» присваивание x:=3000000000, где х имеет тип integer, но начение х будет искажено.
  • 12. Constant or type identifier expected. Требуется имя типа или тип-диапазон.
  • 13. Could not compile used unit <Имя>. Компиляция присоединенного модуля <Имя> невозможна.
  • 14. Data type too large. Тип определяет структуру размером более 2 Гбайт; это слишком много.
  • 15. Declaration expected but <Что-то> found. Пропущено описание или оператор.
  • 16. Declaration of <Имя> differs from previous declarations… Данный заголовок блока не соответствует упреждающему объявлению блока.
  • 17. Default parameter <Имя> must be by-value or constant. Необязательный параметр (со значением по умолчанию) не должен вызываться по ссылке.
  • 18. Expression expected. В этом месте программы должно стоять выражение.
  • 19. Expression too complicated. Выражение излишне сложно для компиляции.
  • 20. File type not allowed here. В этом месте или в этой роли файловую переменную нельзя использовать. Например, она не может быть формальным параметром-значением.
  • 21. For loop control variable must be simple local variable. Параметр цикла должен быть простой локальной (описанной в этом же блоке) переменной.
  • 22. For loop control variable must have ordinal type. Параметр цикла должен иметь порядковый тип.Вещественный тип запрещен.
  • 23. Function needs result type. В заголовке функции надо указывать тип ее результата.
  • 24. Identifier expected but <Что-то> found. В этом месте должно стоять имя. Например, пропущено имя функции после Function.
  • 25. Identifier redeclared <Имя>.<Имя> описано повторно, но в пределах блока имя можно описать лишь раз. Проверьте, не обозначена ли локальная переменная тем же именем, что и формальный параметр блока.
  • 26. Illegal character in input file <знак>. Запретный знак, например «русская» буква, либо вы оставили скобку }, убрав открывающую скобку {.
  • 27. Illegal type in Read/Readln (Write/Writeln) statement. Элемент запрещенного типа в списке ввода/вывода.
  • 28. Incompatible types <указание типов>. Несоответствие типов по присваиванию или типов операндов одной операции. Сообщение выдается и при неверном использовании структур. Например, z — запись, ошибочно записано присваивание z:= 0 (работать надо с полями записи).
  • 29. Invalid function result type. Недопустимый тип результата функции.
  • 30. Label already defined: <Метка>. <Метка> уже помечает другой оператор.
  • 31. Left side cannot be assigned to. He может быть такой левой части в присваивании. Примеры: попытка присвоить значение файловой переменной, присвоение значения формальному параметру-константе.
  • 32. Line too long. В строке программного текста больше 255 знаков.
  • 33. Low bound exceeds high bound. Нижняя граница превышает верхнюю.
  • 34. Missing operator or semicolon.Пропуск операции (например перед скобкой) или пропуск точки с запятой. При пропуске ‘;’ маркер ошибки стоит на очередном предложении (объявлении или операторе).
  • 35. Missing parameter type. He указан тип формального параметра-значения или параметра процедурного типа.
  • 36. Not enough actual parameters. He хватает фактических параметров.
  • 37. Need to specify at least one dimension … Нужно задавать в операторе SetLength хотя бы один размер динамического массива.
  • 38. Number of elements differs from declaration. Число элементов в структурной константе не соответствует ее описанию.
  • 39. Operator not applicable to this operand type. Операция не применима к операндам данного типа. Например: ‘А’ or ‘В’; ‘Text1’* ‘Text2’.
  • 40. Order of fields in record constant differs from declaration. Порядок полей в записи-константе не соответствует описанию записи.
  • 41. Ordinal type required. Требуется порядковый тип (например, в индексе).
  • 42. Out of memory. Компилятору не хватает памяти.
  • 43. Statement expected but <Что-то> found. В этом месте должен стоять оператор. Сообщение выдается во всех случаях, когда в тело блока или секцию инициализации ошибочно помещают описание (<Что-то>). Ошибочная форма обращения к процедуре Procedure <Имя> или к функции Function <Имя> также вызывает сообщение.
  • 44. Sets may have at most 256 elements. Множество (тип Set) не может содержать более 256 элементов.
  • 45. Slice standard function only allowed as open array argument. Функцию Slice можно использовать лишь как фактический параметр
  • 46. Statement not allowed in interface part. Предложения в секции интерфейса программного модуля недопустимы.
  • 47. Syntax error in real number. Синтаксическая ошибка в записи числа вещственного типа.
  • 48. There is no overload version of <Имя> that can be called with these arguments.Не предусмотрен перегружаемый блок <Имя>, который мог бы вызываться с таким аргументом. Пример: IntToStr(x), где х – выражение вещественного типа.
  • 49. Too many actual parameters. Фактических параметров больше, чем формальных.
  • 50. Type actual and formal var parameters must be identical. Тип фактического параметра должен быть идентичен типу формального параметра-переменной.
  • 51. Type of expression must be <Тип>. Выражение должно быть указанного типа. Например,после While и Until должно стоять логическое выражение.
  • 52. Undeclared identifier: <Имя>.Не описано <Имя>. Проверьте есть ли описание в нужном месте,нет ли описок в имени. Если указано имя компонента формы, проверьте,поместили ли компонент на данную форму.
  • 53. Unexpected end of file in comment started on line <N>. Неожиданный конец файла при незавершенном комментарии, начало комментария — в строке N.
  • 54. Unit name mismatch: <Имя>. Имя модуля ошибочно.
  • 55. Unsatisfied forward or external declaration <Имя>. Отсутствует описание блока, объявление которого было дано (заголовок в интерфейсе или в описании объектного типа, либо упреждающее описание).
  • 56. Unterminate string. He закрыта апострофом строка-константа типа string.

Рассмотрим также некоторые сообщения классов warning и hint.

  • Return value of function <Имя> might be undefined. В теле функции нет присваивания ее результата.
  • Variable <Имя> might not have been initialized. Указывает имя переменой, которой не задали значения.
  • For-Loop variable <Имя> may be undefined after loop. Попытка использования значения параметра For-цикла после завершения этого цикла.
  • Text after final ‘END.’ ignored by compiler. Текст, идущий за конечной строкой модуля, игнорируется компилятором.
  • Variable <Имя> is declared but never used in <Имя блока>. Обращает внимание на переменную <Имя>, описанную,но не нашедшую применения.
  • Value assigned to <Имя> never used. Хотя бы одно значение переменной <Имя> никак не использовано.

Несколько рекомендаций

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

Не удаляйте прежний вариант кода,пока не убедитесь,что ошибка устранена. Лучше на время закомментировать код,заключив его в скобки: { код }

Компилятор не анализирует, как будет выполняться программа, поэтому выход значения индекса из диапазона выявляет только если индекс задан константным выражением. Деление на ноль вообще пропускается, кроме оператора div, в случае если делитель — константное выражение.

INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Contact US

Thanks. We have received your request and will respond promptly.

Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!

  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It’s Free!

*Tek-Tips’s functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here

missing operator or semicolon

missing operator or semicolon

(OP)

27 Sep 08 03:32

yes, I know I’m doing something stupid, but I’ve got like 15 of these errors when I’m trying to run and I have no idea what it is wanting.  I’ve tried copying and pasting in lines of code that do work, and it doesn’t help.  

can anyone tell my looking what syntax I might be missing?

     sizeoffile:= IntToStr(FileSize(fileData.InstanceSize));

above, these are declared …
   Form1: TForm1;
   fileName : String;
   myFile : File of Byte;
   fileData : TStringList;
   openDialog : TOpenDialog;
   fileSize, lastsize1 :  Integer;
   sizeoffile: Longint;
   compression1 : Single;

appreciate any offered help.  let me know if this isn’t enough to tell anything and I’ll post up more.  thanks much.

Red Flag Submitted

Thank you for helping keep Tek-Tips Forums free from inappropriate posts.
The Tek-Tips staff will check this out and take appropriate action.

Join Tek-Tips® Today!

Join your peers on the Internet’s largest technical computer professional community.
It’s easy to join and it’s free.

Here’s Why Members Love Tek-Tips Forums:

  • Tek-Tips ForumsTalk To Other Members
  • Notification Of Responses To Questions
  • Favorite Forums One Click Access
  • Keyword Search Of All Posts, And More…

Register now while it’s still free!

Already a member? Close this window and log in.

Join Us             Close

Понравилась статья? Поделить с друзьями:
  • Error unexpectedly disconnected from boot status daemon
  • Error unexpected tab character
  • Error unexpected string concatenation prefer template
  • Error unexpected require global require
  • Error unexpected rcode refused