IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Как рекурсивно вывести список всех файлов и катало, помогите примером.....??
сообщение
Сообщение #1


Гость






Подскажите как через FindFirst и FindNext можно рекурсивно вывести список всех файлов директорий и поддиректорий?
Может есть какой-либо примерчик?smile.gif
Пользовался уже поиском но толку он не дал, мне нужен маленький пример на Дельфи, а все здешние примеры используют модуль Dos, которого нет в Дельфи...
Может подскажите чего??
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Вместо 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

List.Add(StartDir + SearchRec.Name + '\');
ScanDisk(StartDir + SearchRec.Name + '\',Mask,List); { и рекурсия }

End;
Until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
End;
end;

Неужели это так сильно отличается от примера, приведенного здесь: FAQ: Файлы (Поиск файла по директориям)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






volvo, спасибо огромное!!! всё работает как часы!!
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






кстати, по-моему у этого кода есть некоторый баг, если файлы разбросаны так:

Код

c:\test\
c:\test\test.txt
c:\test\test2\
c:\test\test2\test.htm


и выполнить поиск по маске: *.htm, код прервется на первой директории т.к. такого файла там нет (и проигнорирует тот факт, что он возможно есть на дальнейших уровнях)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Правильно. Это так и было задумано тем человеком, который писал код. :yes: Это полностью соответствует МОИМ требованиям к программе... Есть другие требования - пиши свой код... Если я не ошибаюсь, была просьба
Цитата
Подскажите как через FindFirst и FindNext можно рекурсивно вывести список всех файлов директорий и поддиректорий?
И к тому же
Цитата
Может есть какой-либо примерчик?
Понимаешь? Примерчик, а не код "под ключ" !!!
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Но если так и было задумано программистом, то зачем ему надо было вводить параметр Mask, который не работает? smile.gif (если его значение отлично от *.*)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Специально для того, чтобы ты подумал, как этого избежать :D А о том, что директория тоже может иметь расширение, ты не подумал?
Я вот об этом:
Цитата
c:\test\
c:\test\test.txt
c:\test\test2.htm\
c:\test\test2.htm\test.htm
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 9.09.2025 6:53
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name