Borrar una carpeta (y su contenido)
Artículo por Club Developers · 31 diciembre 2005
2597 vistas
Tenemos dos posibilidades a contemplar
- La carpeta está vacÃa: podemos usar la función RemoveDir(const Dir: String): Boolean
- La carpeta no está vacÃa:
Aquà tendremos dos posibilidades, o bien usar la API de la unidad ShellAPI o bien hacer un borrado recursivo usando TSearchRec, FindFirst, FindNext, DeleteFile y RemoveDir
Con el API
Con el otro método
Nota: es preferible asegurarse de la existencia de la carpeta antes de borrarla
- La carpeta está vacÃa: podemos usar la función RemoveDir(const Dir: String): Boolean
- La carpeta no está vacÃa:
Aquà tendremos dos posibilidades, o bien usar la API de la unidad ShellAPI o bien hacer un borrado recursivo usando TSearchRec, FindFirst, FindNext, DeleteFile y RemoveDir
Con el API
delphi
uses  ShellApi; function DelDir(Dir: String): Boolean; var  fos: TSHFileOpStruct; begin  ZeroMemory(@fos, SizeOf(fos));  with fos do  begin   wFunc := FO_DELETE;   fFlags := FOF_SILENT or FOF_NOCONFIRMATION;   pFrom := PChar(Dir + #0);  end;  Result := (0 = ShFileOperation(fos)); end;
Con el otro método
delphi
procedure DeleteDir(Dir: string); begin  EmptyDir(Dir);  RemoveDir(Dir); end; procedure EmptyDir(Dir: string); var  Files: integer;  Search: TSearchRec; begin  Dir := IncludeTrailingPathDelimiter(Dir);  Files := FindFirst(Dir + '*.*', faAnyFile, Search);  while Files = 0 do  begin   if Search.Attr <> faDirectory then    DeleteFile(Dir + Search.Name)   else    if (Search.Name <> '.') and (Search.Name <> '..') then     DeleteDir(Dir + Search.Name);   Files := FindNext(Search);  end;  FindClose(Search); end; // ejemplo de llamada procedure TForm1.Button1Click(Sender: TObject); begin  DeleteDir('c:\carpeta_a_borrar'); end;
Nota: es preferible asegurarse de la existencia de la carpeta antes de borrarla