Ver Mensaje Individual
  #1  
Antiguo 27-08-2004
images images is offline
Miembro
 
Registrado: ago 2004
Posts: 23
Reputación: 0
images Va por buen camino
borrar archivos d un directorio\subdirectorios segun su extension. No me funciona :(

Hola

Investigando sobre como eliminar archivos de un determinado directorio y por la extension del archivo he encontrado estos dos ejemplos(uno en trucomania(gracias de nuevo y otro aqui):


Código Delphi [-]
 
 //Añade 'ShellApi' en el uses de tu form
 
 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;
 
 //Ejemplo de llamada
 
 
 Procedure FTForm1.Button1Click(Sender:TObject);
 Begin
  if Not ALaPapelera('C:\Pruebas\Fichero.txt') Then
    ShowMessage('No se pudo borrar el fichero');
 End;

Pues resulta que este codigo me funciona, elimina el archivo pero me muestra el Message 'No
se pudo....'

Esto me ocurre en Windows XP.


Investigando mas encontre este otro que es mas lo que yo quiero: Eliminar de un directorio
todos los archivos de una determinada extension. Aqui va el codigo:


Código Delphi [-]
 procedure TForm1.Button2Click(Sender:TObject);
 
 Var
  
  MiDir:String;  // Donde están los ficheros
  MisFicheros:String;  //Cadena que contiene el nombre con comodines
  RBusqueda:TSearchRec;  //Está definida en la unidad SysUtils
 
 Begin
  MiDir:='C\CamTexto\Server\';
  MisFicheros:='_*.lck';
  
 If FindFirst(MiDir+MisFicheros,faanyfile, RBusqueda)=0 Then
  Begin
   DeleteFile(PChar(MiDir+RBusqueda.Name));  //Borro el primero si existe
 
     //Busco todos los del mismo patrón y los borro
     While FindNext(RBusqueda)=0 Do
      Begin
       DeleteFile(PChar(MiDir+RBusqueda.Name));
      End;
 
    //Ambas funciones devuelven 0 si la búsqueda tiene éxito
  End;
 End;


Este codigo no me funciona no me borra nada ¿por que? Este es el que me interesa de verdad
por el tema de la aplicacion en red con paradox q estoy haciendo. Para eliminar los archivos
de bloqueo en caso de que la aplicacion no se haya cerrado correctamente.

Lo genial seria poder indicarle un directorio principal(el de tu aplicacion) y borrara todos
los *.XXX de ese directorio y todos sus subdirectorios.
Responder Con Cita