我的程序中用一个StringList对象保存数据,在查询Stringlist的数据中发现一个奇怪的问题,如果元素是队列中的最后一个时,采用Find方法就无法查到。这是什么问题?我用的是D6

解决方案 »

  1.   

    嗯,也就是说,我先后向一个StringList中添加了三个元素,然后我调用Find方法,查询第三个元素是否存在于list中,返回False。
      

  2.   

    部分代码:nCount := theFileList.count;
    if theFileList.Find(strFileName, nIndex) then
    begin
      theFileList.Delete(nIndex);
      theFileList.add(strFileName);
    end
    else begin
      ...
    end;
      

  3.   

    procedure TForm1.Button2Click(Sender: TObject);
    var
     s: TStringList;
     i: integer;
    begin
     s := TStringList.Create;
     s.Add('aa');
     s.Add('bb');
     s.Add('cc');
     if s.Find('cc', i) then
       ShowMessage(IntToStr(i));
    end;D6下调试通过
      

  4.   

    你知到COUNT后还要加1才行,COUNT是总个数,但STRINGLIST是从0开始的
      

  5.   

    回shitianj:
        这个跟Count没关系吧,是Find的问题。
      

  6.   

    是你的代码的问题,与Find毫无关系,Find就是一个二分查找,找得到第一个就找得到最后一个!
      

  7.   

    用 for i:=0 to s.count do