缺少运算符或分号

时间:2016-02-24 14:00:10

标签: delphi delphi-7

procedure TMainWin.AgeEBKeyPress(Sender: TObject; var Key: Char);
procedure ProcessInput(Sender:Tobject);
  var age : byte;
begin
  Age := StrToInt(AgeEB.Text);
  Age := Age+2;
  AnsLbl.visible := True   //it's here, where there is a mistake
  AnsLbl.Caption := 'Bad luck, I"m' + IntTostr(Age) + '-Years old'
  if not (Key in ['0'..'9' , chr(vk_return), chr(vk_back)]) then begin
    key := #0;
    exit

  end

这是代码,有一些问题,但是

2 个答案:

答案 0 :(得分:6)

需要使用分隔符号;分隔语句。

在以下代码中,您无法执行此操作:

AnsLbl.visible := True 
AnsLbl.Caption := 'Bad luck, I"m' + IntTostr(Age) + '-Years old'
if ...

您必须在这三个语句之间放置分隔符。通常它们被放置在每一行的末尾,如下所示:

AnsLbl.visible := True;
AnsLbl.Caption := 'Bad luck, I"m' + IntTostr(Age) + '-Years old';
if ...

但他们不必如此。你可以这样写:

AnsLbl.visible := True
; AnsLbl.Caption := 'Bad luck, I"m' + IntTostr(Age) + '-Years old'
; if ...

那将是非常奇怪的,我并不是在鼓吹你这样做。 documentation说明了这一点:

  

<强>令牌

     

在最简单的层面上,程序是由一系列标记分隔的标记   分隔符。令牌是a中最小的有意义的文本单位   程序。分隔符是空白或注释。严格   说来,并不总是需要在两者之间放置一个分隔符   令牌;例如,代码片段:

Size:=20;Price:=10;
     

完全合法。然而,公约和可读性决定了这一点   我们用两行写出来,如:

Size := 20;
Price := 10;
     

标记被分类为特殊符号,标识符,保留   单词,指令,数字,标签和字符串。一个   只有当令牌是一个字符时,separator才能成为令牌的一部分   串。相邻标识符,保留字,数字和标签   必须在它们之间有一个或多个分隔符。

文档中也有关于compound statements

的说法
  

复合语句

     

复合语句是其他序列(简单或结构化)   语句按写入顺序执行。该   复合语句被保留字开头和结尾括起来,   其组成陈述以分号分隔。对于   例如:

begin
  Z := X;
  X := Y;
  X := Y;
end;
     

结束前的最后一个分号是可选的。所以这可能是   写作:

begin
  Z := X;
  X := Y;
  Y := Z
end;
     

复合语句在Delphi语法的上下文中是必不可少的   需要一个声明。除了程序,功能和   过程块,它们出现在其他结构化语句中,例如   作为条件或循环。例如:

begin
  I := SomeConstant;
  while I > 0 do
  begin
    ...
    I := I - 1;
  end;
end;
     

您可以编写仅包含单个语句的复合语句   成分声明;像复杂术语中的括号一样,开始和   结束有时用于消除歧义并提高可读性。您   也可以使用空的复合语句来创建一个块   没什么:

begin
end;

答案 1 :(得分:-1)

我已经有一段时间了,因为我做了任何德尔福编码,但我认为你需要;每行末尾用分号。

比如这一行:

AnsLbl.visible := True

应该是:

AnsLbl.visible := True;