Borrar un fichero enviándolo a la papelera de Windows
Artículo por Club Developers · 31 diciembre 2005
5079 vistas
DeleteFile (de la unidad SysUtils) borra un fichero de forma definitiva. Pero a veces nos puede interesar no borrar definitivamente ese fichero y enviarlo a la papelera de reciclaje de Windows (estilo a lo que sucede desde el Explorador de Windows). Esto lo conseguiremos con el código siguiente:
Algunos ejemplos de llamadas
Nota: recordar añadir la unidad ShellApi en el uses del formulario
delphi
function DeleteFileToRecycleBin(AFileName: string ) : boolean; var fos: TSHFileOpStruct; begin FillChar(fos, SizeOf(fos),0); with fos do begin Wnd := Application.Handle; wFunc := FO_DELETE; pFrom := PChar(AFileName); fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT; end; result := (0 = ShFileOperation(fos)); end;
Algunos ejemplos de llamadas
delphi
if not DeleteFileToRecycleBin('c:\kk\Fichero.txt') then ShowMessage('No se pudo borrar el fichero'); // Con una sóla llamada podemos tambien borrar más de un fichero if not DeleteFileToRecycleBin('c:\kk\Fichero1.txt'+#0+'c:\windows\Fichero2.txt') then ShowMessage('No se pudo borrar el fichero'); // Podemos borrar incluso una carpeta DeleteFileToRecycleBin('c:\UnDirectorio');
Nota: recordar añadir la unidad ShellApi en el uses del formulario