【问题标题】:Missing operator or semicolon [closed]缺少运算符或分号[关闭]
【发布时间】:2016-02-24 14:00:10
【问题描述】:
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

这是代码,有问题,但是

【问题讨论】:

  • 该错误确切地告诉您问题出在哪里,以及确切地在哪里(您当时甚至添加了评论)。您还希望我们为您做什么?您确切地知道出了什么问题,并且确切地知道它发生在哪里 - 您是否希望我们过来为您使用键盘来添加缺少的分号?另外,我们在这里不做紧急或尽快;如果您需要立即关注您的问题,请聘请承包商或顾问并支付足够高的薪水以提供该级别的响应。
  • ...我刚开始使用delphi...我不知道您必须添加一个;到行的每一端......
  • 正如我所说,如果您真的阅读了这些文字,则错误消息非常清楚。学会这样做很重要。
  • 您使用哪本书、教程或讲师来学习 Delphi?无论您使用什么,甚至连最基本的语法规则都没有教给您。您应该强烈考虑改用其他资源。

标签: delphi delphi-7


【解决方案1】:

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

在下面的代码中,你没有这样做:

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 是这样说的:

代币

在最简单的层面上,程序是由以下各项分隔的标记序列 分隔符。标记是文本中最小的有意义的文本单元 程序。分隔符可以是空白或注释。严格 说起来,并不总是需要在两个之间放置一个分隔符 代币;比如代码片段:

Size:=20;Price:=10;

完全合法。然而,约定和可读性决定了 我们把它写成两行,如下:

Size := 20;
Price := 10;

令牌分为特殊符号、标识符、保留 词、指令、数字、标签和字符串。一种 仅当标记是字符时,分隔符才可以是标记的一部分 细绳。相邻标识符、保留字、数字和标签 它们之间必须有一个或多个分隔符。

文档也有关于 compound statements 的说法:

复合语句

复合语句是其他(简单或结构化)的序列 语句按照编写顺序执行。这 复合语句由保留字 begin 和 end 括起来, 其组成语句用分号隔开。为了 示例:

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

end 之前的最后一个分号是可选的。所以这可能是 写成:

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

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

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

你可以写一个复合语句,只包含一个 组成声明;就像复杂术语中的括号一样,开始和 end 有时有助于消除歧义并提高可读性。你 也可以使用一个空的复合语句来创建一个块 什么都没有:

begin
end;

【讨论】:

    【解决方案2】:

    我已经有一段时间没有进行任何 Delphi 编码了,但我认为你需要;每行末尾的分号。

    比如这条线:

    AnsLbl.visible := True
    

    应该是:

    AnsLbl.visible := True;
    

    【讨论】:

    • 谢谢!成功了!
    • 不,您不需要在每行末尾加分号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    相关资源
    最近更新 更多