Автор: Abdulaziz Jasser
В Delphi есть функция RemoveDir которая удаляет пустые директории. Но как быть, если директория содержит файлы и поддиректории?
Для этой цели была создана функция, выполняющая те же действия, что и RemoveDir, но обладающая большими возможностями.
Совместимость: Все версии Delphi
Function MyRemoveDir(sDir : String) : Boolean; var iIndex : Integer; SearchRec : TSearchRec; sFileName : String; begin Result := False; sDir := sDir + '\*.*'; iIndex := FindFirst(sDir, faAnyFile, SearchRec); while iIndex = 0 do begin sFileName := ExtractFileDir(sDir)+'\'+SearchRec.Name; if SearchRec.Attr = faDirectory then begin if (SearchRec.Name <> '' ) and (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then MyRemoveDir(sFileName); end else begin if SearchRec.Attr <> faArchive then FileSetAttr(sFileName, faArchive); if NOT DeleteFile(sFileName) then ShowMessage('Could NOT delete ' + sFileName); end; iIndex := FindNext(SearchRec); end; FindClose(SearchRec); RemoveDir(ExtractFileDir(sDir)); Result := True; end;
if NOT MyRemoveDir('D:\myDir') then ShowMessage('Can NOT delete dir');
Кстати системные, скрытые и read-only файлы тоже будут удалены.