uses Masks;
// procedure TForm1.Button1Click(Sender: TObject);
// begin
// Memo1.Lines.Clear;
// GetFileListEx('Z:\', '*.*', Memo1.Lines, False);
// Caption:=IntToStr(Memo1.Lines.count);
// end;
//
// procedure TForm1.Button2Click(Sender: TObject);
// begin
//
// Memo1.Lines.Clear;
// GetFileListEx('Z:\', '*.cs', Memo1.Lines, true);
/// /GetFileListEx('Z:\', '*.cs;*.txt', Memo1.Lines, true);
// Caption:=IntToStr(Memo1.Lines.count);
// end;
// 遍歷目錄及子目錄
procedure 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 TForm1.FormCreate(Sender: TObject);
begin
Memo1.Lines.Clear;
GetFileListEx('C:\Users\Admin\Desktop\名人格言\Win32\Release\Data', '*.txt',Memo1.Lines, False);
end;