Карта сайтаСсылкиКонтакты

Хостинг


Удаление каталогов рекурсивным методом

PDF Печать
Статьи

Следующая функция полностью удаляет каталог независимо от того, заполнен ли каталог и имеются ли подкаталоги. Никакого подтверждения не требуется, так что будьте осторожны! Если операция прошла успешно, функция возвращает TRUE, в противном случае FALSE.

Пример использования:


if DelTree('c:\TempDir') then
  ShowMessage('Каталог удален!')
else
  ShowMessage('Произошла ошибка!') ;

{ ................................. }

uses ShellAPI;
Function DelTree(DirName : string): Boolean;
var
  SHFileOpStruct : TSHFileOpStruct;
  DirBuf : array [0..255] of char;
begin
  try
   Fillchar(SHFileOpStruct,Sizeof(SHFileOpStruct),0) ;
   FillChar(DirBuf, Sizeof(DirBuf), 0 ) ;
   StrPCopy(DirBuf, DirName) ;
   with SHFileOpStruct do begin
    Wnd := 0;
    pFrom := @DirBuf;
    wFunc := FO_DELETE;
    fFlags := FOF_ALLOWUNDO;
    fFlags := fFlags or FOF_NOCONFIRMATION;
    fFlags := fFlags or FOF_SILENT;
   end; 
    Result := (SHFileOperation(SHFileOpStruct) = 0) ;
   except
    Result := False;
  end;
end;

 

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


Защитный код
Обновить