Ребят, подскажите, как удалить файлы по маске в каталоге и подкаталогах на 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',
то идет удаление файлов по маске лишь в указанном каталоге, но не в его подкаталогах. Как исправить? А если мы меняем маску на
'*.*'
, то происходит удаление всех файлов во всех подкаталогах. Именно по маске он не удаляет в подкаталогах. В чем ошибка?