Una de las cuestiones mas peligrosas para un usuario final, es permitir que una aplicación borre contenido. Pero muchas veces es una necesidad para los desarrolladores.
Así como podemos copiar una carpeta desde Delphi o mover una carpeta desde Delphi, también podemos borrar una carpeta desde Delphi con una función similar a las anteriores.
Cabe aclarar que debemos utilizar esta función con mucho cuidado, ya que al borrar una carpeta, borramos todo su contenido sin importar cual sea. Recomendamos que si no se sabe el contenido de la carpeta a borrar, utilicemos la función para borrar archivos en ves de carpetas y así tener mayor detalle de lo que eliminamos.
La función para borrar una carpeta desde Delphi es la siguiente:
Uses
ShlObj, Masks, ShellApi;
...
function BorrarCarpeta(const vOrigen: string) : boolean;
var
vCarpetas: TSHFileOpStruct;
begin
// Inicializamos la variable vCarpetas
FillChar(vCarpetas, SizeOf(vCarpetas), #0);
// Preparamos las propiedades de vCarpetas para borrar
vCarpetas.wFunc := FO_DELETE;
vCarpetas.Wnd := GetDesktopWindow;
vCarpetas.pFrom := PChar(vOrigen+#0#0);
// Cargamos las banderas de
// FOF_NOCONFIRMATION -> no pide confirmación para copiar
// FOF_SILENT -> no muestra el dialogo de progreso
// FOF_ALLOWUNDO -> preserva la información para deshacer, si es posible
vCarpetas.fFlags := FOF_NOCONFIRMATION or FOF_SILENT or FOF_ALLOWUNDO;
// Ejecutamos el proceso con ShFileOperation y si devuelve 0, la operación es un éxito
Result := (ShFileOperation(vCarpetas) = 0);
end;
Modo de uso
Al igual que las funciones mover o copiar, su uso es sumamente fácil, a continuación, un ejemplo:
procedure TForm1.Button1Click(Sender: TObject);
begin
if BorrarCarpeta(PChar('c:\carpeta1')) then
Showmessage('Se borró la carpeta con éxito')
else
Showmessage('No se pudo borrar la carpeta');
end;