我是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;
错误: 缺少运算符或分号
答案 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缺少运算符或分号
所以,你可能有类似的问题。您将定义一个额外的符号,隐藏您想要引用的符号。