Получение списка вложенных каталоговDelphi , Файловая система , ДиректорииПолучение списка вложенных каталогов
Автор: Samsonov Aleksandr { **** 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; Переданный код Delphi - процедура Описание работы кода:
Альтернативные решения: Один из способов улучшить код - использовать цикл, чтобы перебрать директории в корневой директории, а затем рекурсивно вызвать Пример:
Код использует функции Обратите внимание, что это альтернативное решение не обязательно более эффективно или лучше, чем оригинальный рекурсивный подход, но это другой способ достичь того же результата. Процедура GetTreeDirs позволяет получить список вложенных каталогов в указанный каталог для последующего построения дерева каталогов. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Директории ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |