Fórum REMOVENDO DIRETÓRIO #150423
29/03/2003
0
Como removo um diretório C:\Teste com todo o conteudo dentro, sem perguntar se quero apagar algo, como se fosse o deltree/y do DOS
[]´s
Fico grato pela ajuda
Nelson
[]´s
Fico grato pela ajuda
Nelson
Anonymous
Curtir tópico
+ 0
Responder
Posts
31/03/2003
Dor_poa
procedure DelTree(const RootDir : String);
var
SearchRec : TSearchRec;
begin
Try
ChDir(RootDir); {Caminho Especificado}
FindFirst(´*.*´,faAnyFile,SearchRec);
Erc := 0;
while Erc = 0 do
begin
if ((SearchRec.Name <> ´.´ ) and (SearchRec.Name <> ´..´)) then
begin
if (SearchRec.Attr and faDirectory>0) then
begin
{Achou o diretório e ira apagar seus arquivos}
DelTree(SearchRec.Name);
end
else
begin
{Achou um arquivo. Apagar ou não}
end;
end;
Erc := FindNext (SearchRec);
{ Erc igual a zero se o FindNext obtiver sucesso, senão erro do DOS}
Application.ProcessMessages;
end;
finally
if Length(RootDir) > 3 then
ChDir(´..´);
end;
end;
//////////////////////
OU ENTAO..
/////////////////////
Uses
Shellapi, filectrl, //declare estas das units!!!
function DeleteFolder(FolderName: String; LeaveFolder: Boolean): Boolean;
var
r: TshFileOpStruct;
begin
Result := False;
if not DirectoryExists(FolderName) then
Exit;
if LeaveFolder then
FolderName := FolderName + ´ *.* ´
else
if FolderName[Length(FolderName)] = ´ \ ´ then
Delete(FolderName,Length(FolderName), 1);
FillChar(r, SizeOf(r), 0);
r.wFunc := FO_DELETE;
r.pFrom := PChar(FolderName);
r.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
Result := ((ShFileOperation(r) = 0) and (not r.fAnyOperationsAborted));
end;
Usa-se Assim:
procedure TForm1.Button1Click(Sender: TObject);
begin
deleteFolder(´c:\temp´,false);
end;
****************
ESPERO TER LHE AJUDADO...
var
SearchRec : TSearchRec;
begin
Try
ChDir(RootDir); {Caminho Especificado}
FindFirst(´*.*´,faAnyFile,SearchRec);
Erc := 0;
while Erc = 0 do
begin
if ((SearchRec.Name <> ´.´ ) and (SearchRec.Name <> ´..´)) then
begin
if (SearchRec.Attr and faDirectory>0) then
begin
{Achou o diretório e ira apagar seus arquivos}
DelTree(SearchRec.Name);
end
else
begin
{Achou um arquivo. Apagar ou não}
end;
end;
Erc := FindNext (SearchRec);
{ Erc igual a zero se o FindNext obtiver sucesso, senão erro do DOS}
Application.ProcessMessages;
end;
finally
if Length(RootDir) > 3 then
ChDir(´..´);
end;
end;
//////////////////////
OU ENTAO..
/////////////////////
Uses
Shellapi, filectrl, //declare estas das units!!!
function DeleteFolder(FolderName: String; LeaveFolder: Boolean): Boolean;
var
r: TshFileOpStruct;
begin
Result := False;
if not DirectoryExists(FolderName) then
Exit;
if LeaveFolder then
FolderName := FolderName + ´ *.* ´
else
if FolderName[Length(FolderName)] = ´ \ ´ then
Delete(FolderName,Length(FolderName), 1);
FillChar(r, SizeOf(r), 0);
r.wFunc := FO_DELETE;
r.pFrom := PChar(FolderName);
r.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
Result := ((ShFileOperation(r) = 0) and (not r.fAnyOperationsAborted));
end;
Usa-se Assim:
procedure TForm1.Button1Click(Sender: TObject);
begin
deleteFolder(´c:\temp´,false);
end;
****************
ESPERO TER LHE AJUDADO...
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)