Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   borrar carpeta (https://www.clubdelphi.com/foros/showthread.php?t=1582)

jomaho 19-06-2003 18:13:59

borrar carpeta
 
tengo una pequeña aplicación para pruebas, y todos los ficheros resultantes que ya no me sirven van a parar a una carpeta llamada pruebas.
Como podría hacer para que a través de un botón en un formulario se borre el contenido de dicha carpeta, sólo el contenido, la carpeta debe seguir intacta, para seguir albergando las sucesivas pruebas que vaya realizando.

delphi.com.ar 19-06-2003 18:22:12

Aquí tienes un ejemplo, solo lo tendrías que retocar un poco:
http://www.clubdelphi.com/foros/arch...borrar+carpeta

jhonny 19-06-2003 18:23:05

Otro mas en trucomania...

-Añade 'ShellApi' en el uses de tu form
-Y utiliza esta función:

Código:

function ALaPapelera(Fichero:string):boolean;
var
  FileOp: TSHFileOpStruct;
begin
  if FileExists(Fichero)then
  begin
    FillChar(FileOp,SizeOf(FileOp),#0);
    with FileOp do
    begin
      Wnd:= Application.Handle;
      wFunc:= FO_DELETE;
      pFrom:= PChar(Fichero+#0#0);
      fFlags:= FOF_SILENT or FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
    end;
    Result:= (ShFileOperation(FileOp)=0);
  end else
    Result:=False;
end;

Un ejemplo de llamada:

Código:

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not ALaPapelera ('c:\kk\Fichero.txt') then
    ShowMessage('No se pudo borrar el fichero/Can not delete file');
end;

Con una sóla llamada podemos tambien borrar más de un fichero. Se haría así:



Código:

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not ALaPapelera ('c:\kk\Fichero1.txt'+#0+'c:\windows\Fichero2.txt') then
    ShowMessage('No se pudo borrar el fichero/Can not delete file');
end;



Simplemente separalos con un caracter 0 ( #0)

Para borrar un subdirectorio... pues sirve la misma función... por ejemplo:


ALaPapelera ('c:\UnDirectorio')

guillotmarc 17-07-2003 01:16:31

Hola.

Hoy he necesitado esta función, y la he modificado ligeramente :

Código:

function ALaPapelera(Fichero:string):boolean;
var
  FileOp: TSHFileOpStruct;
begin
  FillChar(FileOp,SizeOf(FileOp),#0);
  with FileOp do
  begin
    Wnd:= Application.Handle;
    wFunc:= FO_DELETE;
    pFrom:= PChar(Fichero+#0#0);
    fFlags:= FOF_SILENT or FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
  end;
  Result:= (ShFileOperation(FileOp)=0);
end;

Quitando la verificación de existencia del Archivo, podemos llamar a la función de API con comodines.

Es decir algo como

ALaPapelera('C:\Temp\*.tmp');

Saludos.


La franja horaria es GMT +2. Ahora son las 20:52:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi