PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Apagar arquivos e pastas de um só vez #282143

18/05/2005

0

Olá pessoal!

Gostaria de saber se alguém poderia me ajudar com alguma função de apagar arquivos e pastas de forma recursiva. Como fazia o ´DelTree´ do DOS, por exemplo.

Pesquisei e encontrei a seguinte função:

function DelDir(hHandle: THandle; Const sPath : String;
   Confirm: Boolean): Boolean;
// use a funcão assim: DeleteDir(Self.Handle,´C:\TESTE´,True);
var OpStruc: TSHFileOpStruct;
    FromBuffer, ToBuffer: array[0..128] of Char;
begin
   try
      Result := False;

      FillChar(OpStruc, Sizeof(OpStruc), 0);
      FillChar(FromBuffer, Sizeof(FromBuffer), 0);
      FillChar(ToBuffer, Sizeof(ToBuffer), 0);
      StrPCopy(FromBuffer, sPath);

      with OpStruc do
      begin
         Wnd := hHandle;
         wFunc := FO_DELETE;
         pFrom := @FromBuffer;
         pTo := @ToBuffer;

         // Emite mensagem padrão do Windows, de confimação de exclusão
         // da pasta e todo o seu conteúdo.
         if not Confirm then
            fFlags:= FOF_NOCONFIRMATION;

         fAnyOperationsAborted := False;
         hNameMappings := nil;
      end;

      if ShFileOperation(OpStruc) = 0 then
         Result := True;
   except on e: exception do
      begin
         Result := False;
      end;
   end;
end;


Porém, neste caso apesar da função funcionar corretamente, ela demora muito para apagar tudo que exite numa pasta. Eu aponto a pasta e tudo que está dentro é apagado. Só que está demorando em torno de 1,5 segundos para apagar uma única pasta vazia.

Alguém tem uma outra solução para o problema?

Valeu!
wbb


Wbb

Wbb

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar