Энциклопедия Turbo Pascal. Главы 9-11
Страница 36. Неожиданные синтаксические ошибки


Неожиданные синтаксические ошибки

     Иногда вы будете встречаться с синтаксическими ошибками, ко-
торые трудно понять или даже распознать, как ошибки. В частности,
необнаруживаемая ошибка произойдет,  когда вы пытаетесь скомпили-
ровать данный код:
     program Errors; {данная программа не компилируется}

     var
       s: string[80];

     procedure F1(x: string[80]);
     begin
       WriteLn(s);
     end;

     begin
       ReadLn(s);
       F1(s);
     end.

     Если вы попытаетесь скомпилировать эту программу, то увидите
следующее сообщение об ошибке:
     Error 89: ")" expected
     /ошибка 89: ожидалась ")"/

     После нажатия клавиши ESC,  вы обнаружите, что Турбо Паскаль
указывает на строку
     procedure F1(x:string[80]);

с курсором в позиции,  показанной стрелкой.  Это недостаток Турбо
Паскаля?  Нет.  Турбо Паскаль не может использовать тип string  в
вызовах процедур и функций. Вы должны явно декларировать свой тип
и применить его.  В данном примере  вы,  во-первых,  декларируете
тип, называемый str80 с помощью следующего предложения:

     type
       str80 = string[80];

     Затем вы используете заново созданный тип str80, как тип па-
раметра для функции F1.  Правильная программа выглядит  следующим
образом:

     program CorrectecError; {данная программа будет
                      скомпилирована}
     type
       str80 = string[80];

     var
       s := str80;

     procedure F1(x: str80);
     begin
       WriteLn(x);
     end;

     begin
       ReadLn(s);
       F1(s);
     end.

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

     program Error; {данная программа не будет скомпилирована}

     procedure F2;
     var
       t: integer;
     begin
       for t := 1 to 10 do WriteLn('hi there');
     end

     begin
       F2;
     end.

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

 
Следующая статья »