Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум программистов _ Delphi - Система _ Поиск файлов в папке

Автор: destroy 29:03:2008, 15:08

Привет всем.

Вообщем имеется код, для поиска файлов в папке и под папках

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;




Подскажите пожалуйста как процедурку модифицировать, чтобы при поиске файлов писалось еще и название папки.
Тоесть идет в начале название папки а потом файлы, которые найдены. Но важный момент. Если в папке нет
файлов - название папки добавлять не надо.

Чтобы добавлялась папка я знаю как сделать. А вот как сделать чтобы папка не добавлялась если в ней не найдено файлов?

Автор: sax_ol 30:03:2008, 09:53

Надо использовать еще один if.

Автор: dwd 14:05:2008, 09:15

Элементарно: Добавить ExtractFilePath(SearchRec.Name) - это и есть путь к файлу

Чтобы не отображались пустые папки нужно задать маску по расширению if ExtractFileExt(SearchRec.Name)='..' или проверять длинну расширения файла if Length(ExtractFileExt(SearchRec.Name))<2 и если расширение короче 2-х символов то не выполнять вывод (второй способ подходит только в том случае, если вас не интересует поиск файлов без расширения, ведь такие тоже бывают)

Русская версия Invision Power Board (http://www.nulled.ws)
© Invision Power Services (http://www.nulled.ws)