Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 8
1

Ошибка при компиляции "Syntax error "Begin" expected but ";" found"

09.05.2016, 18:48. Просмотров 2525. Ответов 6
Метки нет (Все метки)

При компиляции выдаёт ошибку "Syntax error "Begin" expected but ";" found" в блоке
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Procedure GetLevel(var f:text);
  var
    i:integer;
    ch:string[1];
  begin
    i:=1;
    repeat
      readln(f,buf);
      ch:=copy(buf,1,1);
      if ch<>'.' then
        begin
          mes[i]:=buf;
          readln(f,level[i]);
          i:=i+1;
        end;
    until ch='.';
  end;
Подскажите, что делаю не так? Спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2016, 18:48
Ответы с готовыми решениями:

Ошибка "Fatal: Syntax error, "BEGIN" expected but "END" found"
Ввожу unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil,...

Ошибка "Syntax error, "BEGIN" expected but "end of file" found"
В чём заключается ошибка в 73 строке под названием &quot;Syntax error, &quot;BEGIN&quot; expected but &quot;end of...

Unit1.pas(51,0) Fatal: Syntax error, "BEGIN" expected but "end of file" found
Вобщем, мне говорят что у меня ошибка в несуществующей строке. Пишет мне вот это; unit1.pas(51,0)...

Syntax error "Begin" expected but "uses" found
Syntax error &quot;Begin&quot; expected but &quot;uses&quot; found&quot; (3.1) при компиляции в третьей строке я так понимаю...

6
Хитрая блондиночка $)
1460 / 974 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
09.05.2016, 18:58 2
Ошибка врядли в этой части кода.
0
0 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 8
09.05.2016, 19:15  [ТС] 3
Вот весь код программы:
Pascal
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
uses Crt;
const
  N_LEV=4;
  N_ANS=4;
label
  kon;
var
  f:text;                            
  fn:string[30];                     
  level:array[1..N_LEV] of integer;  
  mes:array[1..N_LEV] of string[80]; 
                                                          
  summa:integer;  
  vopros:integer; 
  n_otv:integer;    otv:integer;    
  score:array[1..N_ANS] of integer;
  buf:string[80]; 
  i:integer;      
 
  procedure info(var f:text);
  var
    ch:string[1];
  begin
    ClrScr;
    repeat
      readln(f,buf);
      ch:=copy(buf,1,1);
      if ch<>'.' then writeln(buf);
    until ch='.';
    writeln;
    write('¤«п Їа®¤®«¦Ґ*Ёп **¦¬ЁвҐ <Enter>');
    ch:=readkey;
  end;
  Procedure GetLevel(var f:text);
  var
    i:integer;
    ch:string[1];
  begin
    i:=1;
    repeat
      readln(f,buf);
      ch:=copy(buf,1,1);
      if ch<>'.' then
        begin
          mes[i]:=buf;
          readln(f,level[i]);
          i:=i+1;
        end;
    until ch='.';
  end;
 
  function VoprosToScr(var f:text;var vopros:integer):integer;
  var
    ch:string[1];
    i:integer;
    code:integer;
  begin
    clescr;
    vopros:=vopros+1;
    writeln('‚®Їа®б ',vopros,'.');
    repeat
      readln(f,buf);
      ch:=copy(buf,1,1);
      if ch<>'.' then writeln(buf);
    until ch'.';
    for i:=1 to 77 do write(chr(196));
    writeln;
    i:=1;
    repeat
      readln(f,buf);
      writeln(i,'.',buf);
      repeat
        readln(f,buf);
        ch:=copy(buf,1,1);
        if(ch<>'.'and(ch<>',')
          then writeln(' ',buf)
          else
            begin
              delete(buf,1,1);
              val(bug,score[1],code);
              i:=i+1;
              writeln;
            end;
      until(ch=',')or(ch='.');
    until ch='.';
    i:=i-1;
    VoprosToScr:=i;
  end;
 
  function GetAns(max:integer):integer;
  const
    K_ENTER=13;
    K_BACKSPACE=8;
    K_0=48;
  var
    ch:char;
    dec:integer;
    maxdec:integer;
    x,y:integer;
    code:integer;
    i:integer;
    n:integer;
  begin
    maxdec:=K_0+max;
    i:=0;
    write('‚*и ®вўҐв(1..',max,')-> ');
    repeat
      ch:=readkey;
      dec:=ord(ch);
      if(dec>K_0) and (dec<=maxdec) and (i=0)
        then
          begin
            write(ch);
            val(ch,n,code);
            i:=i+1;
          end
        else
          if(dec=K_BACKSPACE) and(i=1)
            then
              begin
                i:=0;
                x:=whereX;
                y:=whereY;
                gotoXY(x-1,y);
                write(' ');
                gotoXY(x-1,y);
              end;
    until(i=1)and(dec=K_ENTER);
    GetAns:=n;
  end;
 
  procedure Itog(summa:integer);
  var
    i:integer;
    ch:char;
  begin
    ClrScr;
    writeln('ђҐ§г«мв*вл вҐбвЁа®ў**Ёп');
    for i:=1 to 77 do write(chr(196));
    writeln;
    writeln('Ќ*Ўа****п б㬬*: ',summa);
    i:=1;
    while (summa<levell[1]) and (i<N_LEV) do
    i:=i+1;
    writeln(mes[i];writeln;
    wrtte('„«п §*ЄаҐЇ«Ґ*Ёп **¦¬ЁвҐ <Enter>');
    ch:=readkey;
  end;
 
  begin
    if ParamCount=0 then
      begin
        writeln('ЋиЁЎЄ*! ЌҐ §*¤** д*©« ў®Їа®б®ў вҐбв*.');
        writeln('Љ®¬**¤**п бва®Є*:tester test-1 ');
        goto kon;
      end;
 
    fn:=ParamStr(1);
    assign(f,fn);
  [$I-]
    reset(f);
  [$I+]
    if IOResult<>0 then
      begin
        write('ЋиЁЎЄ*! ЌҐ **©¤Ґ* д*©« вҐбв®ў:',fn);
        goto kon;
      end;
 
    TextBackground(BLUE);
    TextColor(LIGHTGRAY);
    info(f);
    GetLevel(f);
 
    summa:=0;
    vopros:=0;
 
    while not EOF(f) do
      begin
        n_otv:=VoprosToScr(f,vopros);
        otv:=GetAns(n_otv);
        summa:=summa+score[otv];
      end;
    close(f);
    itog(summa);
  kon;
  end.
0
Модератор
Эксперт Pascal/Delphi
6263 / 4221 / 4610
Регистрация: 05.06.2014
Сообщений: 20,794
09.05.2016, 20:19 4
Компилируется.

Pascal
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
uses Crt;
const
  N_LEV=4;
  N_ANS=4;
label
  kon;
var
  f:text;
  fn:string[30];
  level:array[1..N_LEV] of integer;
  mes:array[1..N_LEV] of string[80];
 
  summa:integer;
  vopros:integer;
  n_otv:integer;    otv:integer;
  score:array[1..N_ANS] of integer;
  buf:string[80];
  i:integer;
 
  procedure info(var f:text);
  var
    ch:string[1];
  begin
    ClrScr;
    repeat
      readln(f,buf);
      ch:=copy(buf,1,1);
      if ch<>'.' then writeln(buf);
    until ch='.';
    writeln;
    write('¤«п Їа®¤®«¦Ґ*Ёп **¦¬ЁвҐ <Enter>');
    ch:=readkey;
  end;
  Procedure GetLevel(var f:text);
  var
    i:integer;
    ch:string[1];
  begin
    i:=1;
    repeat
      readln(f,buf);
      ch:=copy(buf,1,1);
      if ch<>'.' then
        begin
          mes[i]:=buf;
          readln(f,level[i]);
          i:=i+1;
        end;
    until ch='.';
  end;
 
  function VoprosToScr(var f:text;var vopros:integer):integer;
  var
    ch:string[1];
    i:integer;
    code:integer;
  begin
    clrscr;
    vopros:=vopros+1;
    writeln('‚®Їа®б ',vopros,'.');
    repeat
      readln(f,buf);
      ch:=copy(buf,1,1);
      if ch<>'.' then writeln(buf);
    until ch='.'; // был знак пропущен = или <> ?
    for i:=1 to 77 do write(chr(196));
    writeln;
    i:=1;
    repeat
      readln(f,buf);
      writeln(i,'.',buf);
      repeat
        readln(f,buf);
        ch:=copy(buf,1,1);
        if(ch<>'.') and (ch<>',')
          then writeln(' ',buf)
          else
            begin
              delete(buf,1,1);
              val(buf,score[1],code);
              i:=i+1;
              writeln;
            end;
      until(ch=',')or(ch='.');
    until ch='.';
    i:=i-1;
    VoprosToScr:=i;
  end;
 
  function GetAns(max:integer):integer;
  const
    K_ENTER=13;
    K_BACKSPACE=8;
    K_0=48;
  var
    ch:char;
    dec:integer;
    maxdec:integer;
    x,y:integer;
    code:integer;
    i:integer;
    n:integer;
  begin
    maxdec:=K_0+max;
    i:=0;
    write('‚*и ®вўҐв(1..',max,')-> ');
    repeat
      ch:=readkey;
      dec:=ord(ch);
      if(dec>K_0) and (dec<=maxdec) and (i=0)
        then
          begin
            write(ch);
            val(ch,n,code);
            i:=i+1;
          end
        else
          if(dec=K_BACKSPACE) and(i=1)
            then
              begin
                i:=0;
                x:=whereX;
                y:=whereY;
                gotoXY(x-1,y);
                write(' ');
                gotoXY(x-1,y);
              end;
    until(i=1)and(dec=K_ENTER);
    GetAns:=n;
  end;
 
  procedure Itog(summa:integer);
  var
    i:integer;
    ch:char;
  begin
    ClrScr;
    writeln('ђҐ§г«мв*вл вҐбвЁа®ў**Ёп');
    for i:=1 to 77 do write(chr(196));
    writeln;
    writeln('Ќ*Ўа****п б㬬*: ',summa);
    i:=1;
    while (summa<level[1]) and (i<N_LEV) do
    i:=i+1;
    writeln(mes[i]);
    writeln;
    write('„«п §*ЄаҐЇ«Ґ*Ёп **¦¬ЁвҐ <Enter>');
    ch:=readkey;
  end;
 
  begin
    if ParamCount=0 then
      begin
        writeln('ЋиЁЎЄ*! ЌҐ §*¤** д*©« ў®Їа®б®ў вҐбв*.');
        writeln('Љ®¬**¤**п бва®Є*:tester test-1 ');
        goto kon;
      end;
 
    fn:=ParamStr(1);
    assign(f,fn);
  {$I-}
    reset(f);
  {$I+}
    if IOResult<>0 then
      begin
        write('ЋиЁЎЄ*! ЌҐ **©¤Ґ* д*©« вҐбв®ў:',fn);
        goto kon;
      end;
 
    TextBackground(BLUE);
    TextColor(LIGHTGRAY);
    info(f);
    GetLevel(f);
 
    summa:=0;
    vopros:=0;
 
    while not EOF(f) do
      begin
        n_otv:=VoprosToScr(f,vopros);
        otv:=GetAns(n_otv);
        summa:=summa+score[otv];
      end;
    close(f);
    itog(summa);
  kon:
end.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
29626 / 19496 / 7642
Регистрация: 22.10.2011
Сообщений: 34,017
Записей в блоге: 6
10.05.2016, 12:06 5
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Цитата Сообщение от ZX Spectrum-128 Посмотреть сообщение
Компилируется
Зависит от настроек FPC. Если в Options->Compiler->Syntax switches->Allow label and goto нет галочки (это, кстати, дефолтное состояние) - то компилироваться не будет. Так что лучше добавить первой строкой:
Pascal
1
{$GOTO ON}
, чтобы перекрыть настройки компилятора, тогда будет компилироваться вне зависимости от того, выбрана та галочка или нет.
2
610 / 650 / 122
Регистрация: 10.08.2015
Сообщений: 2,832
12.05.2016, 00:37 6
В данном случае лучше использовать
Pascal
1
2
3
4
5
if IOResult<>0 then
      begin
        write('ЋиЁЎЄ*! ЌҐ **©¤Ґ* д*©« вҐбв®ў:',fn);
        Halt;
      end;
1
0 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 8
13.05.2016, 13:50  [ТС] 7
Всем ответившим большое спасибо. Компилируется уже, но программа не запускается. Видно, я что-то не то записала в текст программы. Ищу ошибку.
Ещё раз, ВСЕМ ОГРОМНОЕ СПАСИБО за помощь.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2016, 13:50

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ошибка "Syntax Error, ":" expected but ";" found
Unit SourceModMenu; interface Uses Crt; function Menu(X,Y: integer):integer; //Функция для...

Ошибка: Syntax error, ";" expected but "ELSE" found
Напишите программу, использующую модифицированный алгоритм Евклида: нужно заменять большее число на...

Fatal:syntax error,"UNTIL" expected but "indentifier RESET" found
Написала программы а компилятор выдает ошибку что делать?? program lab6; uses crt; type ...

USES SysUtils и ошибка Syntax Error, "BEGIN" expected but "identifier SYSUTILS"
Подключаю SysUtils дабы использовать ф-ции StrToInt и IntToStr, но выдает ошибку Fatal: Syntax...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.