关于搜索文件夹下的文件!(100分)

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

leobasic

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure FileSearch(PathName:string);
var
F : TSearchRec;
Found : Boolean;
begin
ChDir(PathName);
Found := (FindFirst('*.*', faAnyFile, F) = 0);
while Found do
begin
if (F.Name = '.') or (F.Name = '..') then
begin
Found := (FindNext(F) = 0);
Continue;
end;

if (F.Attr and faDirectory)>0 then
begin
Application.ProcessMessages;
FileSearch(F.Name);
end;
//插入你的代码,F.Name就是文件名,GetCurrentDir可以得到当前目录
Found := (FindNext(F) = 0);
end;
FindClose(F);
ChDir('../');
end;

请问这段代码是怎样返回到第一文件夹的??难道FindNext有自动返回功能??如果一个文件夹里面有
很多子文件夹,程序为什么不会不停进入文件夹而漏掉部分文件没有搜索到。
 
请参考
http://www.delphibbs.com/delphibbs/dispq.asp?lid=683103
至于不停进入文件夹而漏掉部分文件是因为先找到目录,而直接进入目录,排在其后的文件
就被失略了,你这个过程是循环过程,一直找到最底层的目录下的文件,应该用递归程序
才行。
 
好像d5开发指南上有!!!!!!
 
循环和递归都可以实现!
 
程序写的很好,
从根本上来说还是树的遍历.
至于你提问的问题,
呵呵,请注意最后一句话ChDir('../');
就在这里了.
如果最底层都没有找到,那么就返回上一层搜索,就是ChDir('../'),
好好想想吧.
你这个问题应该放在数据结构那个版.

 
最后一行有一句ChDir('../');
这句就是返回上一级目录。
 
后退
顶部