Подскажите как через FindFirst и FindNext можно рекурсивно вывести список всех файлов директорий и поддиректорий? Может есть какой-либо примерчик? Пользовался уже поиском но толку он не дал, мне нужен маленький пример на Дельфи, а все здешние примеры используют модуль Dos, которого нет в Дельфи... Может подскажите чего??
volvo
28.06.2005 16:13
Вместо Dos пользуйся SysUtils... Вот пример:
Procedure ScanDisk(StartDir: String; Mask:string; List:TStrings); Var SearchRec: TSearchRec; Begin If Mask ='' Then Mask:= '*.*'; If StartDir[Length(StartDir)] <> '\' then StartDir := StartDir + '\'; If FindFirst(StartDir+Mask, faAnyFile, SearchRec) = 0 then Begin Repeat
Application.ProcessMessages;
If (SearchRec.Attr and faDirectory) <> faDirectory then List.Add(StartDir + SearchRec.Name) Else If (SearchRec.Name <> '..') and (SearchRec.Name <> '.') Then Begin
и выполнить поиск по маске: *.htm, код прервется на первой директории т.к. такого файла там нет (и проигнорирует тот факт, что он возможно есть на дальнейших уровнях)
volvo
29.06.2005 7:32
Правильно. Это так и было задумано тем человеком, который писал код. :yes: Это полностью соответствует МОИМ требованиям к программе... Есть другие требования - пиши свой код... Если я не ошибаюсь, была просьба
Цитата
Подскажите как через FindFirst и FindNext можно рекурсивно вывести список всех файлов директорий и поддиректорий?
И к тому же
Цитата
Может есть какой-либо примерчик?
Понимаешь? Примерчик, а не код "под ключ" !!!
Guest
29.06.2005 8:03
Но если так и было задумано программистом, то зачем ему надо было вводить параметр Mask, который не работает? (если его значение отлично от *.*)
volvo
29.06.2005 8:41
Специально для того, чтобы ты подумал, как этого избежать :D А о том, что директория тоже может иметь расширение, ты не подумал? Я вот об этом: