Цитата:
Сообщение от MoS
Помогите переписать этот код для поиска с маской в подпапках!
|
Я делаю так:
Код:
procedure FindFiles(const Dir, Ext: string; ResultList: TStrings);
procedure SubFind(const Path: string);
var
SR: TSearchRec;
begin
if FindFirst(Path + '*.*', faAnyFile, SR) = NO_ERROR then
try
repeat
if (SR.Attr and faDirectory) = 0 then // File
begin
if AnsiSameText(Ext, ExtractFileExt(SR.Name)) then ResultList.Add(Path + SR.Name);
end else // Dir
begin
if (SR.Name <> '.') and (SR.Name <> '..') then SubFind(Path + SR.Name + '\');
end;
until FindNext(SR) <> NO_ERROR;
finally
FindClose(SR);
end;
end;
begin
SubFind(IncludeTrailingPathDelimiter(Dir));
end;
Подобный код я использую уже много лет и так часто, что могу гарантировать его полную работоспособность.
Пример использования:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.BeginUpdate;
try
FindFiles('C:\WINDOWS', '.exe', ListBox1.Items);
finally
ListBox1.Items.EndUpdate;
end;
end;