findfirst??

flybirdy 2003-05-16 09:29:07
findfirst是被用来搜索某一指定文件,那有没有一个 function是被用来搜索某一指定文件夹的呢?
或既可搜索文件夹又可搜索文件?
...全文
54 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
breezing 2003-05-16
findfirst就可以搜索文件夹

var sr: TSearchRec;

FindFirst('c:\', faAnyFile , sr)

if (sr.Attr and faDirectory ) = faDirectory then
回复
reedseutozte 2003-05-16
这端代码可以实现搜索某一文件加下所有文件的功能
unit unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, StdCtrls, DBCtrls, Mask, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure search(dir:string);
var
targetpath:string;{目标路径名}
sr:TsearchRec;
begin
{第一阶段:找出初始dir目录下的所有文件,
其中dir变量值由edit1的Text属性确定}

targetpath:=extractfilepath(dir);{分解出目标路径名}
if findfirst(dir,faanyfile,sr)=0 then
repeat
if((sr.name<>'.')and(sr.name<>'..'){排除父目录和本目录两个假文件}
and((filegetattr(targetpath+sr.name)and fadirectory)<>fadirectory)){只取文件}
then
form1.memo1.Lines.Add(targetpath+sr.name);{在memo中添加找到的文件}
until findnext(sr)<>0;

if findfirst(dir,faanyfile,sr)=0 then
repeat
if((sr.name<>'.')and(sr.name<>'..')){排除父目录和本目录两个假文件}
and((filegetattr(targetpath+sr.name)and fadirectory)=fadirectory){排除文件}
then
search(targetpath+sr.name+'\*.*');{递归调用}
until findnext(sr)<>0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.Clear;{清除数据表memo字段内容}
search(Edit1.Text);{调用Search()函数}
MessageDlg('文件搜索完毕!',mtInformation,[mbOk],0);{结束提示}

end;

end.
回复
相关推荐
发帖
网络通信/分布式开发
创建于2007-08-02

1573

社区成员

Delphi 网络通信/分布式开发
申请成为版主
帖子事件
创建了帖子
2003-05-16 09:29
社区公告
暂无公告