Pascal FAQ created by SLY Golovanov, 2:5020/278.13
(slightly corrected by Valery Votintsev 2:5021/22)
==============================================================================
Q:> Как обойти все каталоги на диске?
A: Используя процедуры 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.
---
* Origin: (2:5020/794.13)
|