【发布时间】:2014-07-26 09:23:49
【问题描述】:
我想用 r 的元素填充最后三个编辑。不知何故,我的价值没有改变。请看一看!
procedure TForm1.Button1Click(Sender: TObject);
var
r: Array of Real;
cod,h,N,code,i: Integer;
value: Real;
begin
Val(Edit1.Text, cod, code);
Val(Edit2.Text, h, code);
Val(Edit3.Text, N, code);
Edit1.Text := Edit1.Text;
Edit2.Text := Edit2.Text;
Edit3.Text := Edit3.Text;
setlength(r, N);
i:= 0;
while i<= N do
begin
r[i] := cod/2 + h*i;
i := i + 1;
end;
Edit4.Text := formatfloat('#.0', r[0]);
Edit5.Text := formatfloat('#.0', r[1]);
Edit6.Text := formatfloat('#.0', r[2]);
end;
end.
【问题讨论】:
-
我能看到
i没有改变的唯一原因是读取N时出错。我可能会使用 StrToInt 而不是 val -
请您提供一个带有硬编码输入的 SSCCE,而不是提供指代 GUI 控件的代码,其内容我们只能猜测。或者,我将您推荐给出色的调试器。
-
@JamesBarrass:在这种情况下,如果不忽略结果,TryStrToint 可能会更好。在这里,
code永远不会检查错误,它只是被忽略。我也不明白Edit.Text := Edit1.Text应该做什么,或者为什么使用 while 循环而不是 for 循环。 -
@RudyVelthuis 同意,我之所以指出这一点,是因为我看到
Val直接使用的很少,以至于我花了一点时间才意识到N的设置位置。 -
@JamesBarrass:是的,直接使用 Val 很老派。 Real 的使用也是如此。我猜这是取自一个非常古老的例子。
标签: arrays delphi delphi-xe6