Поиск файлов в папке

Тема в разделе "Delphi - Система", создана пользователем destroy, 29 мар 2008.

  1. destroy

    destroy Гость

    Привет всем.

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

    [codebox]
    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;

    [/codebox]


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

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

    dwd Гость

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

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

Поделиться этой страницей