СообЧа > База Знаний > Программирование > 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 Сообщество Чайников
Контактная информация