Проход дерева каталогов

Previous  Top  Next

    
 

 

 

Code:

Procedure ScanDir(Dir:string);

var SearchRec:TSearchRec;

begin

if Dir<>'' then if Dir[length(Dir)]<>'\' then Dir:=Dir+'\';

if FindFirst(Dir+'*.*', faAnyFile, SearchRec)=0 then

repeat

if (SearchRec.name='.') or (SearchRec.name='..') then continue;

if (SearchRec.Attr and faDirectory)<>0 then

ScanDir(Dir+SearchRec.name) //we found Directory: "Dir+SearchRec.name"

else

Showmessage(Dir+SearchRec.name); //we found File: "Dir+SearchRec.name"

until FindNext(SearchRec)<>0;

FindClose(SearchRec);

end;

 

 

procedure TForm1.Button1Click(Sender: TObject);

begin

ScanDir('c:');

end;

 

 

©Drkb::03153

Автор: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)

 

Ненамного сложнее, но возможностей поболе будет.

Code:

procedure ScanDir (Path:string;SearchMask:TStrings;ScanSub:boolean);

var

SearchRec:TSearchrec;

a,i:integer;

begin

if ScanSub then

begin

FindFirst(path+'\*.*',faDirectory,SearchRec);{. found}

FindNext(SearchRec); {.. found}

a:=FindNext(SearchRec);

while a=0 do

begin

if (SearchRec.Attr and faDirectory)>0 then

 

ScanDir(Path+'\'+SearchRec.Name,SearchMask,ScanSub);

a:=FindNext(SearchRec);

end;{while}

FindClose(SearchRec);

end;{if}

 

for i:=0 to SearchMask.Count-1 do

begin

a:=FindFirst(Path+'\'+SearchMask[i],faAnyFile,SearchRec);

while a=0 do

begin

{operation on file}

a:=FindNext(SearchRec);

end;{while}

FindClose(SearchRec);

end;{for}

 

end; {ScanDir}

 

 

Автор December

©Drkb::03154

Взято с Vingrad.ru http://forum.vingrad.ru