- 你的循环变量是
x
,但是你用i
循环体内部。
- 您迭代错误的索引。德尔福的指数按惯例为零。你的循环应该从
0
运行到Count-1
。
的其他一些观点:
x
不是整数索引一个伟大的变量名。使用i
或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;
'for x ...'和'... Item [i] .....您可能还想使用索引'0'到'count -1' –