Как удалить файлы по маске в подкаталогах Delphi?

Ребят, подскажите, как удалить файлы по маске в каталоге и подкаталогах на Delphi?
Имеется код функции:
function FullRemoveDir(Dir: string; DeleteAllFilesAndFolders,
  StopIfNotAllDeleted, RemoveRoot: boolean): Boolean;
var
  i: Integer;
  SRec: TSearchRec;
  FN: string;
begin
  Result := False;
  if not DirectoryExists(Dir) then
    exit;
  Result := True;

  Dir := IncludeTrailingBackslash(Dir);
  i := FindFirst(Dir + '*.log', faAnyFile, SRec);
  try
    while i = 0 do
    begin

      FN := Dir + SRec.Name;

      if SRec.Attr = faDirectory then
      begin

        if (SRec.Name <> '') and (SRec.Name <> '.') and (SRec.Name <> '..') then
        begin
          if DeleteAllFilesAndFolders then
            FileSetAttr(FN, faArchive);
          Result := FullRemoveDir(FN, DeleteAllFilesAndFolders,
            StopIfNotAllDeleted, True);
          if not Result and StopIfNotAllDeleted then
            exit;
        end;
      end
      else
      begin
        if DeleteAllFilesAndFolders then
          FileSetAttr(FN, faArchive);
        Result := SysUtils.DeleteFile(FN);
        if not Result and StopIfNotAllDeleted then
          exit;
      end;

      i := FindNext(SRec);
    end;
  finally
    SysUtils.FindClose(SRec);
  end;
  if not Result then
    exit;
  if RemoveRoot then
    if not RemoveDir(Dir) then
      Result := false;
end;

Однако если указать маску '*.log',то идет удаление файлов по маске лишь в указанном каталоге, но не в его подкаталогах. Как исправить? А если мы меняем маску на '*.*', то происходит удаление всех файлов во всех подкаталогах. Именно по маске он не удаляет в подкаталогах. В чем ошибка?
  • Вопрос задан
  • 590 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
Ну ясен перец.
Каталоги надо искать по *, а файлы удалять по *.log.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы