首页
社区
课程
招聘
求助:哪位兄弟有delphi快速遍历目录的源程序或方法
发表于: 2005-5-22 17:00 7447

求助:哪位兄弟有delphi快速遍历目录的源程序或方法

nig 活跃值
4
2005-5-22 17:00
7447
除了递归,我觉得这个递归处理不好会溢出.
有什么更快速的方法吗?
请兄弟指点一下!

谢谢兄弟的回复,我不重开帖了,就在原来的上面改.那个也是用递归.

调用方法:
DFSFiles('c:\');
其中c:\是要深搜的文件夹名称
输出到lstDFSFiles:TListBox

procedure DFSFiles(filename:string);
var curfile:TSearchRec;
begin
ChDir(filename);
if (FindFirst(filename+'*.*',faAnyFile,curfile) = 0) then
begin
  repeat
    if ( ( (curfile.Attr and faDirectory)<>0 ) and (curfile.Name <> '.') and (curfile.Name <> '..') ) then
    begin
      DFSFiles( ExpandFileName(curfile.Name) + '\' );
    end
    else
    begin
      if not DirectoryExists( ExpandFileName(curfile.Name) ) then
      begin
        if ( pos( UpperCase(ExtractFileExt(curfile.Name)),Exts ) <> 0 ) then
          frmMain.lstDFSFiles.Items.Append( ExpandFileName(curfile.Name) );
      end;
    end;
  until (FindNext(curfile) <> 0);
  FindClose(curfile);
end;
ChDir('..');
end;

我帖的这个帖的递归就还可以,我想找有没有更快速的.

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 98674
活跃值: (200999)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
2
看看这篇文章可以吗?
http://www.pcdog.com/p/html/20041231/311220045558_1.htm
2005-5-22 17:11
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
3
我用msdn里面的代码,竟然有的2级目录都遍历不到,很郁闷
2005-5-23 11:19
0
雪    币: 413
活跃值: (722)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
原因可能在FindNEXT上,如果没有别的新的方法,我只好采用上面的方法了,但我总觉得递归有时会出问题,特别是目录深的时候。
2005-5-24 06:58
0
雪    币: 99
活跃值: (2548)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
遍历目录使用递归算法是没有问题的。不过上面的方法需要改进。不推荐用改变当前目录的方法,因为在查找结束之后,会改变程序的当前目录。解决办法是设置一个全局变量来保存文件目录的绝对路径。
2005-5-24 18:48
0
雪    币: 413
活跃值: (722)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
明白了,多谢!
那个程序是针对搜索C;\的,所以没有考虑的那么多,另外,目录搜索我觉得真是麻烦.还在按要求创建上层,再上层目录的过程,分析起来事多!
2005-5-24 19:10
0
游客
登录 | 注册 方可回帖
返回
//