StringList的一个问题

Tackie 2004-09-08 03:55:44
我的程序中用一个StringList对象保存数据,在查询Stringlist的数据中发现一个奇怪的问题,如果元素是队列中的最后一个时,采用Find方法就无法查到。

这是什么问题?

我用的是D6
...全文
119 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
succeese 2004-09-08
  • 打赏
  • 举报
回复
用 for i:=0 to s.count do
Tackie 2004-09-08
  • 打赏
  • 举报
回复
一种算法

这个问题我现在是绕过去的,已经解决了,不过觉得奇怪而已。
luke5678 2004-09-08
  • 打赏
  • 举报
回复
To楼上的大哥:

什么叫二分查找啊??(-_-#好深奥)
reallike 2004-09-08
  • 打赏
  • 举报
回复
是你的代码的问题,与Find毫无关系,Find就是一个二分查找,找得到第一个就找得到最后一个!
reallike 2004-09-08
  • 打赏
  • 举报
回复
如果是这样,就是你程序的问题了。

无从回答。
Tackie 2004-09-08
  • 打赏
  • 举报
回复
回shitianj:
这个跟Count没关系吧,是Find的问题。
shitianj 2004-09-08
  • 打赏
  • 举报
回复
你知到COUNT后还要加1才行,COUNT是总个数,但STRINGLIST是从0开始的
angelface 2004-09-08
  • 打赏
  • 举报
回复
写下你的代码看看~
Tackie 2004-09-08
  • 打赏
  • 举报
回复
这个代码我也写过,但是我的程序里就是不行。

我现在是在这个判断之后,专门判断一下最后一个元素来解决的。
luke5678 2004-09-08
  • 打赏
  • 举报
回复
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下调试通过
Tackie 2004-09-08
  • 打赏
  • 举报
回复
部分代码:

nCount := theFileList.count;
if theFileList.Find(strFileName, nIndex) then
begin
theFileList.Delete(nIndex);
theFileList.add(strFileName);
end
else begin
...
end;
Tackie 2004-09-08
  • 打赏
  • 举报
回复
嗯,也就是说,我先后向一个StringList中添加了三个元素,然后我调用Find方法,查询第三个元素是否存在于list中,返回False。
reallike 2004-09-08
  • 打赏
  • 举报
回复
不懂,从来都能查到。你没有代码,无话可说……

5,402

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧