Delphi 获取路径下的所有文件(转)

    procedure GetFileListEx(FilePath, ExtMask: string; FileList: TStrings; SubDirectory: Boolean = True);

 


//------------------------------------------------------------------------------
// 遍历目录及子目录
procedure TForm2.GetFileListEx(FilePath, ExtMask: string; FileList: TStrings; SubDirectory: Boolean = True);
function Match(FileName: string; MaskList: TStrings): Boolean;
var
i: integer;
begin
Result := False;
for i := 0 to MaskList.Count - 1 do
begin
if MatchesMask(FileName, MaskList[i]) then
begin
Result := True;
break;
end;
end;
end;

var
FileRec: TSearchRec;
MaskList: TStringList;
begin
if DirectoryExists(FilePath) then
begin
if FilePath[Length(FilePath)] <> '\' then
FilePath := FilePath + '\';
if FindFirst(FilePath + '*.*', faAnyFile, FileRec) = 0 then
begin
MaskList := TStringList.Create;
try
ExtractStrings([';'], [], PChar(ExtMask), MaskList);
FileList.BeginUpdate;
repeat
if ((FileRec.Attr and faDirectory) <> 0) and SubDirectory then
begin
if (FileRec.Name <> '.') and (FileRec.Name <> '..') then
GetFileListEx(FilePath + FileRec.Name + '\', ExtMask, FileList);
end
else
begin
if Match(FilePath + FileRec.Name, MaskList) then
FileList.Add( { FilePath + } FileRec.Name);
end;
until FindNext(FileRec) <> 0;
FileList.EndUpdate;
finally
MaskList.Free;
end;
end;
FindClose(FileRec);
end;
end;

 

procedure TForm2.btn1Click(Sender: TObject);
Var fileList: TStringList;
fileStr: TStrings;
begin
Memo1.Lines.Clear;
GetFileListEx('D:\ghsoft\ECG\out', '*.csv',Memo1.Lines, False);
GetFileListEx('D:\ghsoft\ECG\out', '*.csv',fileStr, False);
ShowMessage(fileStr.Text);
end;

posted @ 2019-08-29 11:09  小美lmt  阅读(880)  评论(0编辑  收藏  举报