为什么下面的代码没有遍历ListView?
for x := 1 to ListView1.Items.Count do
Begin
PName := ListView1.Items.Item[i].Caption;
Variable := ListView1.Items.Item[i].SubItems[0];
Val := ListView1.Items.Item[i].SubItems[1];
ToFIle(PName, Variable, Val);
End;发布于 2016-04-15 17:21:30
x,但是您在循环体中使用了i。0运行到Count-1。其他一些要点:
对于整数索引来说,
x不是一个很好的变量名。Use i or index.Item属性是TListItems的默认属性,因此可以通过省略该属性来简化代码。我写的代码应该是这样的:
var
i: Integer;
PName, Variable, Val: string;
....
for i := 0 to ListView1.Items.Count-1 do
begin
PName := ListView1.Items[i].Caption;
Variable := ListView1.Items[i].SubItems[0];
Val := ListView1.Items[i].SubItems[1];
ToFIle(PName, Variable, Val);
end;或者引用每一项,从而避免重复:
var
i: Integer;
Item: TListItem;
PName, Variable, Val: string;
...
for i := 0 to ListView1.Items.Count-1 do
begin
Item := ListView1.Items[i];
PName := Item.Caption;
Variable := Item.SubItems[0];
Val := Item.SubItems[1];
ToFIle(PName, Variable, Val);
end;或者使用for/in循环,而不需要关心列表项的索引:
var
Item: TListItem;
PName, Variable, Val: string;
...
for Item in ListView1.Items do
begin
PName := Item.Caption;
Variable := Item.SubItems[0];
Val := Item.SubItems[1];
ToFIle(PName, Variable, Val);
end;发布于 2016-04-15 17:20:21
如果你在循环i中使用x作为循环变量,它是如何迭代的。
还有这一条:
for x := 1 to ListView1.Items.Count do是不正确的,因为您从未到达第一个元素。请更改为:
for x := 0 to ListView1.Items.Count - 1 do
Begin
PName := ListView1.Items.Item[x].Caption;
Variable := ListView1.Items.Item[x].SubItems[0];
Val := ListView1.Items.Item[x].SubItems[1];
ToFIle(PName, Variable, Val);
End;https://stackoverflow.com/questions/36643064
复制相似问题