Apagar subpastas via Delphi
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
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
Curtidas 0