【发布时间】:2014-05-08 17:07:40
【问题描述】:
我正在尝试编写代码来计算构成 stringgrid 主对角线的单元格中所有数字的总和,但我得到的结果只是我在右下角单元格中输入的数字。这是我的代码:
procedure TForm1.Button1Click(Sender: TObject);
var
i, j: Integer;
begin
with StringGrid1 do
begin
RowCount := StrToInt(Edit1.Text);
ColCount := StrtoInt(Edit2.Text);
for i := 0 to RowCount - 1 do
Cells[0, i] := IntToStr(i);
for j := 0 to ColCount - 1 do
Cells[j, 0] := IntToStr(j);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i, j, s, z, n: Integer;
begin
z := 0;
with StringGrid1 do
begin
for i := 1 to RowCount - 1 do
for j := 1 to ColCount - 1 do
s := StrToInt(Cells[j, i]);
for n := RowCount - 1 to ColCount - 1 do
if i = j then
z := z + s;
Label1.Caption := IntToStr(z);
end;
end;
end.
我错过了什么?提前致谢
【问题讨论】:
-
你在
for j:=1 to colcount-1 do和end之后错过了begin在z:=z+s;之后,你必须把这个块放在一起。 -
调试器可能会在几分钟内将您引导至此问题的根源,即使您的代码格式不正确。你为什么不试试呢?老实说。
-
代码的另一个问题是您没有使用任何异常处理以防 strtoint 失败。阅读“尝试除外”。
-
就个人而言,我认为在每种情况下处理异常都有点过多,所以我使用 strToIntDef(myValue, defaultValue);大多数情况下
标签: delphi stringgrid