procedure FilesFromWildcard(Directory: String; const Mask: String; Files: TStringList; Subdirs, ShowDirs, Multitasking: Boolean);
var
SearchRec: TSearchRec;
Attr, Error: Integer;
begin
Directory := IncludeTrailingPathDelimiter(Directory);
// First, find the required file...
Attr := faAnyFile;
if ShowDirs = False then
Attr := Attr - faDirectory;
Error := FindFirst(Directory + Mask, Attr, SearchRec);
if (Error = 0) then begin
while (Error = 0) do begin
// Found one!
Files.Add(Directory + SearchRec.Name);
Error := FindNext(SearchRec);
if Multitasking then
Application.ProcessMessages;
end;
FindClose(SearchRec);
end;
// Then walk through all subdirectories.
if Subdirs then begin
Error := FindFirst(Directory + '*.*', faAnyFile, SearchRec);
if (Error = 0) then begin
while (Error = 0) do begin
// Found one!
if (SearchRec.Name[1] <> '.') and (SearchRec.Attr and
faDirectory <> 0) then
// We do this recursively!
FilesFromWildcard(Directory + SearchRec.Name, Mask, Files,
Subdirs, ShowDirs, Multitasking);
Error := FindNext(SearchRec);
end;
FindClose(SearchRec);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
t:tstringlist;
begin
t:=tstringlist.Create;
//FilesFromWildcard('d:\','*.*',t,false,false,false); //获取当前目录下所有文件
//FilesFromWildcard('d:\','*.*',t,false,true,false); //当前目录+文件
//FilesFromWildcard('d:\','*.*',t,true,false,false); //获取当前目录包括子目录所有文件
FilesFromWildcard('d:\','*.*',t,true,true,false); //遍历所有目录和文件
Memo1.Text:=t.text;
end;
Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号
执行时间: 0.054354906082153 seconds