6th
Ноя

Дерево жесткого диска в StringList

Posted by Chas under Пост-обзор

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

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;

Тема на форуме

Похожие статьи