我似乎无法理解以下错误。
列表框越界(0)TString
我有一个带有列表框的表单或窗口,以下代码应该可以使用它。它假设从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文件将返回“NEW CHART 2”字符串。我在这里错过了什么吗?
更新:selectedbox1count
保存来自ini文件的值...
答案 0 :(得分:5)
根据您的评论,您尝试将项目添加到ListBox,但Items[]
属性用于读取/修改现有项目。< / p>
你需要更像这样的东西:
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;
答案 1 :(得分:3)
错误告诉您列表框selectedbox
为空。我希望错误更像是这样:
列出索引越界(0)
这告诉您索引0无效,这只能表示列表框中没有项目。
据推测,selectedbox1count
实际上并不是列表框中的项目数。通过selectedbox.Count
或selectedbox.Items.Count
获取。
您只能修改已存在的项目。很明显,你需要在其余部分添加项目。通过致电selectedbox.AddItem
或selectedbox.Items.Add
来完成此操作。
for i := 0 to selectedbox1count - 1 do
selectedbox.AddItem(...);