var
strlist:Tstringlist;
list,url:string;
const
i='a.txt';
begin
{$I-}
URL:=edit1.text;
if url='' then begin
   edit1.setfocus;
   exit;
   end;
strlist:=Tstringlist.create;
try
if not FileExists(i) then begin
    Edit1.SetFocus;
    showmessage('找不到'+i);
    Exit;
  end;
strlist.loadfromfile(i);
list:=strlist.text;
if pos(url,list)>0 then begin
 l:=strlist.IndexOf(url);
  showmessage(strlist[l]) ;
  end
  else
  showmessage('NO');
finally
 strlist.free;
 end;
end;
我在edit1输入文件i中存在的字符,就出现提示List index out of bounds(-1)

解决方案 »

  1.   

    l:=strlist.IndexOf(url);
    有问题
      

  2.   

    我试验过,代码应该没有问题,你检查一下a.txt,各个string应该分行显示,之间不加其他任何符号。
      

  3.   

    呵,没来的及看你的代码,但看你这个提示是因为.index定位出界了.如定位在-1等.
      

  4.   

    每行象这样:aaa bbb ,ccc
    没问题呀?
      

  5.   

    将l:=strlist.IndexOf(url);
    改为:l:=pos(url,list)-1
    查询a.txt中第一行成功,查第2行showmessage的是其它行的字符,再查几个就出上面的错误提示。
    谁帮看一下!
      

  6.   

    showmessage(strlist[l]) ;有问题
    可能strlist.count的值为0,你用showmessage(strlist[0]) ;
      

  7.   

    l值为-1 list里没有你要的那个url
    看一下你的那list里面是什么东西
      

  8.   

    if pos(url,list)>0 then begin
     l:=strlist.IndexOf(url);
      showmessage(strlist[l]) ;
      end
      else
      showmessage('NO');改成:
      if pos(url,list)>0 then begin
        l:=strlist.IndexOf(url);
        if l>-1 then
          showmessage(strlist[l]) 
        else 
      end showmessage('NO')
      else
      showmessage('NO');
      

  9.   

    错了,改过if pos(url,list)>0 then begin
        l:=strlist.IndexOf(url);
        if l>-1 then
          showmessage(strlist[l]) 
        else showmessage('NO')
      end 
      else
      showmessage('NO');