Delphi、Lazarus - 列表框越界 (0) TString
Delphi, Lazarus - Listbox out of bound (0) TString
我根本无法理解以下错误。
列表框越界 (0) TString
我有一个带有列表框的表单或 window,下面的代码应该可以使用它。它假设从 ini 文件中获取字符串列表并设置到列表框。
IF selectedbox1count <> 0 then
BEGIN
FOR i:=0 to selectedbox1count-1 do
selectedbox.items[i] := AInifile.ReadString('DATAVIEW2', 'SHIFT1CHART'+(i+1), ' ');
END;
但是它总是在第一次到达 selectedbox.items[i]
行时弹出一条错误消息。读取 ini 文件 returns "NEW CHART 2" 字符串。我在这里遗漏了什么吗?
更新:selectedbox1count
保存来自 ini 文件的值 ...
错误告诉您列表框 selectedbox
是空的。我希望错误更像这样:
List index out of bounds (0)
这告诉您索引 0 无效,这只能表示列表框中没有项目。
推测selectedbox1count
实际上不是列表框中的项目数。使用 selectedbox.Count
或 selectedbox.Items.Count
获取它。
您只能修改已经存在的项目。很明显,您需要向其余部分添加项目。通过调用 selectedbox.AddItem
或 selectedbox.Items.Add
来实现。
for i := 0 to selectedbox1count - 1 do
selectedbox.AddItem(...);
根据您的评论,您正在尝试向列表框添加项目,但是 Items[]
属性 用于 reading/modifying 个现有项目。
您需要更像这样的东西:
SelectedBox.Items.BeginUpdate;
try
SelectedBox.Items.Clear;
SelectedBox1Count := AInifile.ReadInteger(...);
for i := 0 to SelectedBox1Count-1 do
SelectedBox.Items.Add(AInifile.ReadString('DATAVIEW2', 'SHIFT1CHART'+(i+1), ' '));
finally
SelectedBox.Items.EndUpdate;
end;
我根本无法理解以下错误。
列表框越界 (0) TString
我有一个带有列表框的表单或 window,下面的代码应该可以使用它。它假设从 ini 文件中获取字符串列表并设置到列表框。
IF selectedbox1count <> 0 then
BEGIN
FOR i:=0 to selectedbox1count-1 do
selectedbox.items[i] := AInifile.ReadString('DATAVIEW2', 'SHIFT1CHART'+(i+1), ' ');
END;
但是它总是在第一次到达 selectedbox.items[i]
行时弹出一条错误消息。读取 ini 文件 returns "NEW CHART 2" 字符串。我在这里遗漏了什么吗?
更新:selectedbox1count
保存来自 ini 文件的值 ...
错误告诉您列表框 selectedbox
是空的。我希望错误更像这样:
List index out of bounds (0)
这告诉您索引 0 无效,这只能表示列表框中没有项目。
推测selectedbox1count
实际上不是列表框中的项目数。使用 selectedbox.Count
或 selectedbox.Items.Count
获取它。
您只能修改已经存在的项目。很明显,您需要向其余部分添加项目。通过调用 selectedbox.AddItem
或 selectedbox.Items.Add
来实现。
for i := 0 to selectedbox1count - 1 do
selectedbox.AddItem(...);
根据您的评论,您正在尝试向列表框添加项目,但是 Items[]
属性 用于 reading/modifying 个现有项目。
您需要更像这样的东西:
SelectedBox.Items.BeginUpdate;
try
SelectedBox.Items.Clear;
SelectedBox1Count := AInifile.ReadInteger(...);
for i := 0 to SelectedBox1Count-1 do
SelectedBox.Items.Add(AInifile.ReadString('DATAVIEW2', 'SHIFT1CHART'+(i+1), ' '));
finally
SelectedBox.Items.EndUpdate;
end;