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
这是代码,有一些问题,但是
答案 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;