СообЧа > База Знаний > Программирование > Delphi

Вопрос

Как получить список файлов со всеми подкаталогами

Ответ

procedure ScanDir(StartDir: string; Mask:string; List:TStrings);
var
SearchRec : TSearchRec;
begin
    if Mask = '' then Mask := '*.*';
if StartDir[Length(StartDir)] <> '\' then StartDir := StartDir + '\';
 if FindFirst(StartDir+Mask, faAnyFile, SearchRec) = 0 then
    begin
        repeat
       Application.ProcessMessages;
if (SearchRec.Attr and faDirectory) <> faDirectory then List.Add(StartDir + SearchRec.Name)
else if (SearchRec.Name <> '..') and (SearchRec.Name <> '.') then begin
 List.Add(StartDir + SearchRec.Name + '\');
ScanDir(StartDir + SearchRec.Name + '\',Mask,List);
    end;
until FindNext(SearchRec) <><> 0;
        FindClose(SearchRec);
    end;
end;

Пример вызова. параметры

1. имя папки
2. маска, по умолчанию *.*
3. хранилище для резульатат, любой наследник от TString, например TStringList

procedure TForm1.Button1Click(Sender: TObject);
begin
    ListBox1.Items.Clear;
    ScanDir('c:','',ListBox1.Items);
Label1.Caption := IntToStr(ListBox1.Items.Count);
end;

Анатолий Подгорецкий



Copyright © 2000-2004 Сообщество Чайников
Контактная информация