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

Тема в разделе "Delphi", создана пользователем WinHack, 27 ноя 2016.

  1. WinHack
    Следующая функция полностью удаляет каталог независимо от того, заполнен ли каталог и имеются ли подкаталоги. Никакого подтверждения не требуется, так что будьте осторожны! Если операция прошла успешно, функция возвращает 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;