Как удалить директорию, содержащую файлы и
поддиректории.
Автор: 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');
Заметка:
(1) Кстати системные, скрытые и read-only файлы тоже
будут удалены.
|