您的位置:首页 > 编程语言 > Delphi

DELPHI--查找目录下所有文件

2012-01-17 21:11 295 查看
在站点收入了一篇文章:
http://hi.baidu.com/nianxiaoyou/blog/item/de4b79faad71378c9f514669.html

其中第三个内容是实现:

查找某目录下的所有目录,包含 “.” “..”

代码如下:

procedure TForm1.Button2Click(Sender: TObject);

var

sr: TSearchRec;

begin

ListBox1.Items.Clear ;

if FindFirst('D:\work\*.*', faAnyFile, sr) = 0 then

begin

    repeat

      if (sr.Attr and faDirectory)<>0 then

        ListBox1.Items.Add(sr.Name+ '   '+intToStr(sr.Attr)) ;

    until FindNext(sr) <> 0;

    FindClose(sr);

end;

showMessage(intToStr(ListBox1.Items.count));

end;

首先是声明sr为TSearchRec类型.

然后清除listbox内的内容

下面开始核心的代码了
if FindFirst('D:\work\*.*', faAnyFile, sr) = 0

我们来看下FindFirst函数说明:

FindFirst的详细说明在本站有收录.不过是E文的文档.
http://hi.baidu.com/nianxiaoyou/blog/item/10001d0f6f329b2f6159f379.html
function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer; $[SysUtils.pas

该函数是SysUtils单元内的一个函数.

主要有3个参数.

Path: 要搜索的路径,String类型

Attr :   我个人把这个参数定义为类型的意思

F: 是一个TSearchRec类型.

大家可以看下TSearchRec的详细说明.
http://hi.baidu.com/nianxiaoyou/blog/item/03bbdc523efe3e0b0df3e34a.html

该类型的说明:

TSearchRec defines file information searched for by FindFirst or FindNext.

按照我的理解.

TSearchRec 是确定要搜索的文件信息.比如TSearchRec的Name属性.是得到搜索文件的文件名.

下面看下TSearchRec的属性.

Delphi syntax:

On Windows:

   type 

   TSearchRec = record

    Time: Integer;

    Size: Integer;

    Attr: Integer;

    Name: TFileName;

    ExcludeAttr: Integer;

    FindHandle: THandle;

    FindData: TWin32FindData;

end;

在Windows下.有以上的属性可以使用.
FindFirst的返回值为0时,表示文件存在.

对于参数都了解了.

那么可以解释findfirst的参数说明了
if FindFirst('D:\work\*.*', faAnyFile, sr) = 0 then

begin

    repeat

    ....

    until ....
的意思是 搜索D盘内work文件夹内的所有目录并保存文件的信息

如果有文件存在.

那么执行下面循环.

循环语句的执行语句内,if (sr.Attr and faDirectory)<>0 then

假如sr的属性和目录文件存在,

那么执行ListBox1.Items.Add(sr.Name+ '   '+intToStr(sr.Attr)) ;

就是在listbox控件内添加sr.name      sr.attr

循环的终止条件是:until FindNext(sr) <> 0;

FindNext(sr)<>0;

FindNext函数是继续搜索文件.如果搜索到文件,那么返回值为0.

最后FindClose(sr);

结束当前搜索.

如果不结束.那么则会占用系统资源.
然后用消息框输出,listbox内项目的个数,也就是我们搜索得到的目录的个数.

这个程序,也分析的差不多了.

希望能帮助到需要的人.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息