Класс для рекурсивного обхода дерева каталоговDelphi , Файловая система , ДиректорииКласс для рекурсивного обхода дерева каталогов
Автор: Святослав { **** UBPFD *********** by delphibase.endimus.com **** >> Класс (компонент) для рекурсивного обхода дерева каталогов (всего диска или заданной папки). На каждый файл и директорию вызывается соответствующий event. TTreeWalker.TargetPath - путь для обхода. TTreeWalker.OnNewDir - event вызывается при обнаружении каждой поддиректории TTreeWalker.OnNewFile - файла. Зависимости: Windows, Messages, SysUtils, Classes; Автор: Святослав, lisin@asicdesign.ru, ICQ:138752432, Saint Petersburg Copyright: (C) NetBreaker666[AWD]<SP666>@Svjatoslav_Lisin - т.е. я сам Дата: 11 августа 2002 г. ***************************************************** } unit TreeWalker; //Просто рекурсивный обход. Я думаю комментарии не требуются. interface uses Windows, Messages, SysUtils, Classes; type PNewDir = procedure(Sender: TObject; Dir: string) of object; PNewFile = procedure(Sender: TObject; F: TSearchRec) of object; type TTreeWalker = class(TComponent) private { Private declarations } TargetPathV: string; OnNewFileV: PNewFile; OnNewDirV: PNewDir; procedure SetTargetPath(const S: string); function GetTargetPath: string; procedure SetOnFile(const ONF: PNewFile); function GetOnFile: PNewFile; procedure SetOnDir(const OND: PNewDir); function GetOnDir: PNewDir; procedure Recurs(S: string; D: Integer); protected { Protected declarations } public { Public declarations } procedure Process; published { Published declarations } property TargetPath: string read GetTargetPath write SetTargetPath; property OnNewFile: PNewFile read GetOnFile write SetOnFile; property OnNewDir: PNewDir read GetOnDir write SetOnDir; end; procedure Register; implementation procedure TTreeWalker.SetTargetPath(const S: string); begin TargetPathV := S; if TargetPathV[Length(TargetPathV)] <> '\' then TargetPathV := TargetPathV + '\'; end; function TTreeWalker.GetTargetPath: string; begin Result := TargetPathV; end; procedure TTreeWalker.SetOnFile(const ONF: PNewFile); begin OnNewFileV := ONF; end; function TTreeWalker.GetOnFile: PNewFile; begin Result := OnNewFileV; end; procedure TTreeWalker.SetOnDir(const OND: PNewDIr); begin OnNewDirV := OND; end; function TTreeWalker.GetOnDir: PNewDir; begin Result := OnNewDirV; end; procedure TTreeWalker.Process; begin Recurs(TargetPathV, 0); end; procedure TTreeWalker.Recurs(S: string; D: Integer); var F: TSearchRec; R: Integer; begin if D > 512 then Exit; if @OnNewDirV <> nil then OnNewDirV(self, S); R := FindFirst(S + '*.*', faAnyFile, F); while R = 0 do begin if @OnNewFileV <> nil then OnNewFileV(self, F); if (F.Attr and faDirectory <> 0) and (F.Name <> '.') and (F.Name <> '..') then Recurs(S + F.Name + '\', D + 1); R := FindNext(F); end; FindClose(F); end; procedure Register; begin RegisterComponents('NetBreakers', [TTreeWalker]); end; end. Компонент Delphi для рекурсивного обхода деревьев каталогов и файлов, предоставляющий события при обнаружении новых каталогов или файлов. Вот краткое описание компонента:
Класс TTreeWalker позволяет рекурсивно обходить дерево каталогов, вызывая события на каждый файл и директорию. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Директории ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |