德尔福新手的错误

时间:2014-11-23 15:17:24

标签: delphi

我是Delphi的新手,我真的无法弄清楚为什么这三行代码不起作用。任何帮助将不胜感激。

代码:

   begin
rNum := StrToFloat(Edit6.Text);
edtRound.Text := IntToStr(round(rNum));
edtSqr.Text := FloatToStrF(sqr(rNum), ffFixed, 8, 3);
edtSqrt.Text := FloatToStrF(sqrt(rNum), ffFixed, 8, 3);
edtFrac.Text := FloatToStr(Frac(rNum));
edtTrunc.Text := IntToStr(trunc(rNum));
edtFrac.Text := FloatToStr(frac(rNum));

end;

错误: 缺少运算符或分号

1 个答案:

答案 0 :(得分:3)

该程序成功编译:

{$APPTYPE CONSOLE}

uses
  SysUtils;

procedure Foo;
var
  Text: string;
  rNum: Double;
begin
  rNum := StrToFloat(Text);
  Text := IntToStr(round(rNum));
  Text := FloatToStrF(sqr(rNum), ffFixed, 8, 3);
  Text := FloatToStrF(sqrt(rNum), ffFixed, 8, 3);
  Text := FloatToStr(Frac(rNum));
  Text := IntToStr(trunc(rNum));
  Text := FloatToStr(Frac(rNum));
end;

begin
end.

我已经更改了您的代码,以便制作一个可以轻松发布的简单程序。

这表明您的问题不在于您展示的代码。问题出在其他地方。弄清楚那个具体问题应该不是你学习的主要教训。主要教训应该是如何简化问题并清楚地进行诊断。

你应该做的是从你当前的代码开始并开始剥离。当你剥离出对行为产生影响的东西时,你已经学会了一些东西。把那个东西放回去,弄清楚为什么删除它改变了行为。那时你应该有一个解释。

现在考虑一下这个程序:

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
  Frac: Double = 0.0;

procedure Foo;
var
  Text: string;
  rNum: Double;
begin
  rNum := StrToFloat(Text);
  Text := IntToStr(round(rNum));
  Text := FloatToStrF(sqr(rNum), ffFixed, 8, 3);
  Text := FloatToStrF(sqrt(rNum), ffFixed, 8, 3);
  Text := FloatToStr(Frac(rNum));
  Text := IntToStr(trunc(rNum));
  Text := FloatToStr(Frac(rNum));
end;    
begin
end.

它无法在引用Frac的行上编译,编译器报告此错误:

  

[dcc32错误]:E2066缺少运算符或分号

所以,你可能有类似的问题。您将定义一个额外的符号,隐藏您想要引用的符号。