Apagar subpastas via Delphi

Delphi

31/10/2006

Boa tarde,

Pesquisando na Internet encontrei a função abaixo que permite excluir subpastas, o problema é que as vezes funciona e as vezes não, o sistema exibe a mensagem informando que a pasta não pode ser apagada.
Alguém conhece alguma outra função ou procedure que pode ser utilizada?

function TFrm_GeraRelatorioWeb.ApagarPasta(NomeDaPasta: String; ManterPasta: Boolean): Boolean;
var
R: TSHFileOpStruct;
begin
Result := False;

if not DirectoryExists(NomeDaPasta) then
Exit
else
begin
if ManterPasta then
NomeDaPasta := NomeDaPasta + ´*.*´
else
if NomeDaPasta[Length(NomeDaPasta)] = ´\´ then
Delete(NomeDaPasta, Length(NomeDaPasta), 1);

FillChar(R, SizeOf(R), 0);
R.wFunc := FO_DELETE;
R.pFrom := PChar(NomeDaPasta);
R.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT or FOF_NOERRORUI;
result := ((SHFileOperation(R) = 0) and (not R.fAnyOperationsAborted));
end;
end;

O erro ocorre de forma aleatória, poderia ser que a pasta estivesse sendo utilizada no momento da exclusão mais isso não acontece.

A função acima é utilizada em um sistema que faz a varredura dos dados de uma tabela contendo os nomes das pastas que são passadas como parâmetros. A estação tem Windows 2000 Professional.

chamada da função:

v_retorno_funcao:=ApagarPasta(v_drive_para_download+´\´+v_pasta+´\´,false);

Obrigado

Airton


Airoosp

Airoosp

Curtidas 0
POSTAR