查找目录下所有子目录下的所有文件!!(76分)

  • 主题发起人 主题发起人 fdluoping
  • 开始时间 开始时间
F

fdluoping

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾:
小弟有一事,就是想用delphi实现查找目录下的所有文件,包括子目录的,谁有帮我一下,小弟一定给于高分。最好有实例,在网上看到有些,但没有调用方法。
 
这个不错,网上的
下面是主要方法
function TForm1.IsValidDir(SearchRec: TSearchRec): Boolean;
begin
if (SearchRec.Attr=16) and (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
result:=true
else
result:=false;
end;

function TForm1.SearchFile(mainpath, filename: string;
var foundresult: TStrings): Boolean;
var
i:Integer;
Found:Boolean;
subdir1:TStrings;
searchRec:TSearchRec;
begin
Found:=false;
if trim(filename)<>'' then
begin
subdir1:=TStringList.Create;
if (FindFirst(mainpath+'*.*',faDirectory,searchRec)=0) then
begin
if IsValidDir(SearchRec) then
subdir1.Add(SearchRec.Name);
while (FindNext(SearchRec)=0 ) do
begin
if IsValidDir(SearchRec) then
subdir1.Add(SearchRec.Name);
end;
end;
FindClose(SearchRec);
if FileExists(mainpath+filename) then
begin
Found:=true;
foundresult.Add(mainpath+filename);
end;
for i:=0 to subdir1.Count-1 do
found:=SearchFile(mainpath+subdir1.Strings+'/',FileName,foundresult);
subdir1.Free;
end;
result:=found;
end;
 
楼上的方法,我在网上看到过,很多都是这种,但是我调用的时候,参数怎么给呢?请指教!!比如我有个listbox控件。怎样能把查找的文件显示到控件里,谢谢了!!!
 
用递归比较快些。
 
小弟比较急,请各位大虾帮忙,谢谢!!!
 
参数含义:FilePath: 起始目录,
AllowType:允许的文件类型, 如 传递 "*.jpg;*.doc;*.txt"
FindSubDir: 是否查找子目录
procedure MakeTree(FilePath:String; AllowType:String; FindSubDir:Boolean);
var
Sr:TsearchRec;
Err:Integer;
FilesName:String;
begin
Err:=FindFirst('*.*',$37,sr);
while (Err=0) do
begin
if Sr.Name[1]<>'.' then
begin
case (Sr.Attr and faDirectory) of
0: //找到一个文件
begin
FilesName:=trim(UpperCase(sr.Name));
// showMessage(ExtractFilePath(FilesName)+ExtractFileExt(FilesName));
if Pos(ExtractFileExt(FilesName),UpperCase(AllowType))>0 then
//做您想要做的事情
end;
16://目录
begin
if FindSubDir then begin //是否查找子目录
ChDir(Sr.Name);
MakeTree(Sr.Name, AllowType, FindSubDir);
ChDir('..');
end;
end;
end;
end;
Err:=FindNext(Sr);
end;
end;
 
SearchFile(mainpath, filename: string;var foundresult: TStrings): Boolean;
这个方法啊,三个参数:主路径/文件名/结果 最后那个结果是你要的 爱放哪儿就放哪儿啊
 
SearchFile(edit1.text,'*.jpg',listbox.items);
但是系统提示出错啊?如果把listbox.items改成 TStrings对象的话,还得不到里面的数据。请请教!!
 
能不能把你的调用方法给我下啊,帮帮忙了。
 
多人接受答案了。
 
后退
顶部