procedure TfrmMain.add();
begin
  if opendialog1.Execute then 
    for i:=0 to OpenDialog1.Files.Count-1 do
    begin
      AddtoList(Opendialog.Files.Strings[i]);
    end;
end;procedure TfrmMain.AddtoList(const filename: String);
var
  item:TListItem;
begin
  item:=lvFiles.items.Add;
  item.Caption:= FileName;
end;为什么会出现说 :
  EStringListError ,List index out of bounds(-2);

解决方案 »

  1.   

    手头没有delphi,只好猜测啦
    1.for i:=0 to OpenDialog1.Files.Count-1 do  可能出现那种错误
    改为for i:=0 to OpenDialog1.Files.Count do
    2.TlistItem你不需要动态创建吗? 把item:=lvFiles.items.Add;
      item.Caption:= FileName;变一下顺序试试哈哈,应该就可以了吧,分~~~~~~
      

  2.   

    直接加入列表(命名ListBox)不可以吗?何必如此繁琐
    procedure TfrmMain.add();
    begin
      listBox.item.clear;
      if opendialog1.Execute then 
        for i:=0 to OpenDialog1.Files.Count-1 do
         ListBox.Items.add(Opendialog.Files.Strings[i]);
    end;
      

  3.   

    谢谢两位了,原来问题不是出在上同的代码里,是出在ListView的排序代到里。