Как обойти все вложенные подкаталоги?
Рассмотрим метод обхода дерева каталогов с помощью FindFirst и FindNext.
Используя процедуры FindFirst, FindNext перебираем все вхождения в каталог, и проверяем каждое из них - если это каталог, то входим в него и рекурсивно вызываем функцию обхода каталога.
Uses Dos;
Procedure DirTree(path:string);
var
sr:searchrec;
begin
If path[length(path)]<>'\' then path:=path+'\';
findfirst(path+'*.*',AnyFile,sr);
while (doserror=0) do begin
if (sr.attr and directory) = directory then begin
if (sr.name<>'.') and (sr.name<>'..') then
DirTree(path+sr.name+'\');
end else begin
writeln(path+sr.name);
end;
findnext(sr);
end;
end;
begin
DirTree(ParamStr(1));
end.