>> FindFirst,Next из доса нормально рекурсивные каталоги не проходит
>> :-(
Ну не наезжайте на Борландовскую RTL не разобравшись.
Проходит и еще как. Сам многократно писал этот проход
на всех версиях от 5.5 до 7.0 и ни разу у меня проблем
не возникло.
(см. scandisk.pas)
---------------------------------------------------------------------------
Phone: 7(095)230-80-61 Victor B. Wagner
Fax: 7(095)230-80-42 Dokuchaev Soil Institute, Pyzhevsky lane, 7
EMail: vitus@agropc.msk.su Moscow,109017 Russia
{> Cut here. FileName= SCANDISK.PAS }
Unit ScanDisk;
interface
uses dos;
Type ProcessFile=Procedure(FileName:PathStr);
Procedure RecurseTree(StartDir:PathStr;Action:ProcessFile);
var SR:Searchrec;
begin
if StartDir[Length(StartDir)]<>'\' then
StartDir:=StartDir+'\';
FindFirst(StartDir+'*.*',{Собака может быть зарыта
здесь. Если вы задатите, скажем *.pas,
вам потребуются два цикла поиска - один для
файлов, а второй с шаблоном *.* для директорий,
а то директории, не имеющие расширения pas не будут
найдены ;-)}
Archive+Directory {ReadOnly и Hidden
добавлять по вкусу},sr);
While DosError=0 do
begin
if (Sr.Attr and Directory)<>0 then
begin
RecurseTree(StartDir+Sr.Name,Action);
end
else
Action(StartDir+Sr.Name);
FindNext(Sr);
end;
end;
end.
|