findfirst findnext 递归查找指定目录下所有子目录下所有文件,为什么总是死机?(5分)

  • 主题发起人 主题发起人 lkdbdlkq
  • 开始时间 开始时间
L

lkdbdlkq

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.FindAll(const Path: String);<br>var<br> &nbsp;sr:TSearchRec;<br> &nbsp;fr:Integer;<br>begin<br>fr:=FindFirst(Path,faAnyFile,sr);<br>while fr=0 do<br> &nbsp;begin<br> &nbsp;if (sr.Attr=faDirectory)and(sr.Name&lt;&gt;'.')and(sr.Name&lt;&gt;'..') then<br> &nbsp; &nbsp;FindAll(sr.Name) &nbsp;<br> &nbsp;else<br> &nbsp; &nbsp;begin<br> &nbsp; &nbsp; showmessage(sr.name);<br> &nbsp; &nbsp;end;<br> &nbsp;FindNext(sr);<br> &nbsp;end;<br>FindClose(sr);<br>end;<br><br>我是从网上找到的这个函数,可是调用时总是不停时showmessage,一直停不下来,这是为什么呢?万分感谢!
 
在循环中加入一行<br>application.ProcessMessages;
 
你的循环有问题,永远跳不出来
 
fr:=FindFirst(Path,faAnyFile,sr);<br>while not fr do<br> &nbsp;begin<br> &nbsp;if (sr.Attr=faDirectory)and(sr.Name&lt;&gt;'.')and(sr.Name&lt;&gt;'..') then<br> &nbsp; &nbsp;FindAll(sr.Name) &nbsp;<br> &nbsp;else<br> &nbsp; &nbsp;begin<br> &nbsp; &nbsp; showmessage(sr.name);<br> &nbsp; &nbsp;end;<br> &nbsp;fr := FindNext(sr);<br> &nbsp;end;<br>FindClose(sr);
 
接受答案了.
 

Similar threads

I
回复
0
查看
430
import
I
I
回复
0
查看
528
import
I
I
回复
0
查看
572
import
I
I
回复
0
查看
629
import
I
后退
顶部