Проход дерева каталогов
Материал из DRKB
Проход дерева каталогов[править | править код]
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;
Ненамного сложнее, но возможностей поболе будет.
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;
FindClose(SearchRec);
end;
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;
FindClose(SearchRec);
end;
end;
Author: Vit
Автор December
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 03154