Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
29:03:2008, 15:08
|
|
Новенький ![]() Группа: Программист Сообщений: 8 Регистрация: 17:03:2008 Пользователь №: 15 943 Репутация: 0
|
Привет всем.
Вообщем имеется код, для поиска файлов в папке и под папках CODE procedure FindFiles(StartFolder, Mask: string; List: TStrings; ScanSubFolders: Boolean = True); var SearchRec: TSearchRec; FindResult: Integer; s2s: integer; s3s,s_test: string; s4s: integer; begin List.BeginUpdate; try StartFolder := IncludeTrailingBackslash(StartFolder); FindResult := FindFirst(StartFolder + '*.*', faAnyFile, SearchRec); try while FindResult = 0 do with SearchRec do begin if (Attr and faDirectory) <> 0 then begin if ScanSubFolders and (Name <> '.') and (Name <> '..') then FindFiles(StartFolder + Name, Mask, List, ScanSubFolders); end else begin if MatchesMask(Name, Mask) then List.Add(StartFolder + Name); end; FindResult := FindNext(SearchRec); end; finally FindClose(SearchRec); end; finally List.EndUpdate; end; end; Подскажите пожалуйста как процедурку модифицировать, чтобы при поиске файлов писалось еще и название папки. Тоесть идет в начале название папки а потом файлы, которые найдены. Но важный момент. Если в папке нет файлов - название папки добавлять не надо. Чтобы добавлялась папка я знаю как сделать. А вот как сделать чтобы папка не добавлялась если в ней не найдено файлов? Сообщение отредактировал destroy - 29:03:2008, 15:09 |
|
Сообщение
#1
|
|
![]() |
|
|
30:03:2008, 09:53
|
|
============== ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 740 Регистрация: 11:01:2007 Пользователь №: 8 750 Специализация: specialist Репутация: 27
|
Надо использовать еще один if.
|
|
Сообщение
#2
|
|
|
|
14:05:2008, 09:15
|
|
Новенький ![]() Группа: Программист Сообщений: 4 Регистрация: 14:05:2008 Пользователь №: 17 259 Специализация: Системный администратор Репутация: 0
|
Элементарно: Добавить ExtractFilePath(SearchRec.Name) - это и есть путь к файлу
Чтобы не отображались пустые папки нужно задать маску по расширению if ExtractFileExt(SearchRec.Name)='..' или проверять длинну расширения файла if Length(ExtractFileExt(SearchRec.Name))<2 и если расширение короче 2-х символов то не выполнять вывод (второй способ подходит только в том случае, если вас не интересует поиск файлов без расширения, ведь такие тоже бывают) Сообщение отредактировал dwd - 14:05:2008, 09:16 |
|
Сообщение
#3
|
|
![]() |
|
Текстовая версия | Сейчас: 17:05:2008 - 08:37 |