RSS Feed

Удалить директорию с поддиректориями (Delphi)

0

Февраль 1, 2012 by admin

В 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’);

Заметка:

Cистемные, скрытые и read-only файлы тоже будут удалены.


0 comment »

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>