Получение списка вложенных каталогов

Советы » Каталоги » Получение списка вложенных каталогов

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Получение списка вложенных каталогов

Процедура служит ля получения списка каталогов вложенных в указанный каталог.
Полезно ее использовать для построения дерева каталогов.
Полученные в OutPaper данные можно передать процедуре
Радионова Алексейя которая по ним построит дерево.

Зависимости: sysutils, classes, StdCtrls, UDBF.FillTreeViewWithFiles
Автор:       Samsonov Aleksandr, s002156@mail.ru, Tver
Copyright:   s002156Shurik
Дата:        19 сентября 2002 г.
***************************************************** }

procedure

GetTreeDirs(Root: string

; OutPaper: TStringList); var

i: Integer; s: string

; procedure

InsDirs(s: string

; ind: Integer; Path: string

; OPaper: TStringList); var

{Вставляет в Memo список вложенных директорий} sr: TSearchRec; attr: Integer; begin

attr := 0; attr := faAnyFile; if

DirectoryExists(Path) then

if

FindFirst(IncludeTrailingBackslash(Path) + '*.*', attr, SR) = 0 then

begin

repeat

if

(sr.Attr = faDirectory) and

(sr.Name[Length(sr.Name)] <> '.') then

OPaper.Insert(ind, s + sr.Name); until

(FindNext(sr) <> 0); FindClose(SR); end

end

; begin

{Проверяем существуетли начальный каталог} if

not

DirectoryExists(Root) then

exit; {Создаем список каталогов первой вложенности} if

root[Length(Root)] <> '' then

InsDirs(root + '', OutPaper.Count, Root, OutPaper) else

InsDirs(root, OutPaper.Count, Root, OutPaper); i := 0; repeat

s := OutPaper[i]; //в s получаем путь к уже внесенному в список кат. // Вставляем сразу за данной директорией в списке, // список вложенных в нее директорий. // Тем самым увеличиваем OutPaper.Lines.Count. // Таким образом катологи в которых поиск еще не производился, // оказываются ниже и очереь до них еще дойдет. InsDirs(s + '', i + 1, OutPaper[i], OutPaper); inc(i); until

(i = OutPaper.Count); end

;

Пример использования:

procedure

TForm1.Button1Click(Sender: TObject); var

Strs: TStringList; begin

Strs := TStringList.Create; try

GetTreeDirs('C:', Strs); FillTreeViewWithFiles(TreeView1, Strs); finally

Strs.Free; end

; end

;

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com