Pascal错误 - ";"预期但是Else找到了

时间:2015-06-21 03:01:56

标签: syntax-error pascal

我正在使用pascal进行分配,但仍然遇到此错误'";"预期但是Else发现了#39;我已经看到很多问题,并尝试用它们来帮助自己,但没有运气。

我的代码

Program TeamWrite;  
    Var FName, txt : String[10];  
    UserFile : Text;  
BEGIN          
    FName := 'Team';  
    Assign(UserFile, 'C:\Team.dat');  
    Rewrite(UserFile);  
    Writeln('Enter players name and score separated by a space, type end to finish');  
    if txt = 'end' then;  
        BEGIN  
            Close(UserFile)  
        End;  
    Else  
        BEGIN  
            Readln(txt);  
            Writeln;  
            Writeln(UserFile,txt);  
        End;  
    Until(txt = 'end');  

End.  

3 个答案:

答案 0 :(得分:2)

在Pascal中,分号(即&#34 ;;")用于分隔语句,而不是结束语句。所以你应该说:

if txt = 'end' then
  begin
    Close(UserFile)
  end
else
  begin
    Readln(txt);  
    Writeln;  
    Writeln(UserFile, txt)
  end

请注意then之后,else之前和之后,以及end之前的两个语句后面没有分号。

另请注意,您可以在语句和end之间添加分号,例如:

begin
  WriteLn;
  WriteLn(txt);  <-- this is allowed
end

但是编译器会将其解释为在分号后面有一个空语句:

begin
  WriteLn;
  WriteLn(txt);
  (an empty statement here)
end
但是,这是无害的。

&#34;直到&#34;也是一个错误,因为它是一个保留字。在Pascal中有一个&#34;重复...直到&#34;循环,如:

i := 0;
repeat
  WriteLn(i);
  i := i + 1
until i > 10

它就像C&#34;做......而&#34;循环,只有条件反转。在你的程序中,我认为你应该在`if:

之前有一个repeat
repeat
  if txt = 'end then
    ...
  else
    ...
until txt = 'end'

答案 1 :(得分:0)

我不熟悉Pascal,但快速浏览一些我认为你不需要的网站;在第一个if语句之后:

if txt = 'end' then;  

应该是

if txt = 'end' then

答案 2 :(得分:0)

您错放了一些;

if txt = 'end' then; // remove ';' 
    BEGIN  
        Close(UserFile) //add `;`
    End;  // remove ';' 
Else  
    BEGIN  
        Readln(txt);  
        Writeln;  
        Writeln(UserFile,txt);  
    End;  
Until(txt = 'end'); 

请参阅here