Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Исходники Форум Информер Страны мира
   Файловые Утилиты    >>    scandisk
   
 
 Сканирование файлов по всему диску   Виктор Вагнер 21.02.1995

Использование FindFirst, FindNext для рекурсивного обхода каталогов



1k 
 

>> 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.