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

在站点收入了一篇文章:
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内项目的个数,也就是我们搜索得到的目录的个数.

这个程序,也分析的差不多了.
希望能帮助到需要的人.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值