标签:
//包括文件夹里面的文件
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;
标签:
原文地址:http://www.cnblogs.com/h2zZhou/p/5159462.html