Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
{ **** UBPFD *********** by delphibase.endimus.com **** >> Получение списка вложенных каталогов Процедура служит ля получения списка каталогов вложенных в указанный каталог. Полезно ее использовать для построения дерева каталогов. Полученные в OutPaper данные можно передать процедуре Радионова Алексейя которая по ним построит дерево. Зависимости: sysutils, classes, StdCtrls, UDBF.FillTreeViewWithFiles Автор: Samsonov Aleksandr, s002156@mail.ru, Tver Copyright: s002156Shurik Дата: 19 сентября 2002 г. ***************************************************** } procedureGetTreeDirs(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
;
Пример использования:
procedureTForm1.Button1Click(Sender: TObject); var
Strs: TStringList; begin
Strs := TStringList.Create; try
GetTreeDirs('C:', Strs); FillTreeViewWithFiles(TreeView1, Strs); finally
Strs.Free; end
; end
;