Borrar una carpeta (y su contenido)
Artículo por Club Developers · 31 diciembre 2005
3094 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


