Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-08-2004
images images is offline
Miembro
 
Registrado: ago 2004
Posts: 23
Poder: 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
  #2  
Antiguo 27-08-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por images
Este codigo no me funciona no me borra nada ¿por que?
¿Has hecho una traza de la ejecución para ver si realmente encuentra el archivo?

En

Código Delphi [-]
MiDir:='C\CamTexto\Server\';

faltan los ':' después de la 'C', y en

Código Delphi [-]
MisFicheros:='_*.lck';

¿qué no sobra el '_'?

// Saludos
Responder Con Cita
  #3  
Antiguo 27-08-2004
images images is offline
Miembro
 
Registrado: ago 2004
Posts: 23
Poder: 0
images Va por buen camino
Ya me funciona!

Resulta que eran los dos puntos despues de la unidad 'C:\', vaya! siento haber puesto el hilo por una chorrada asi, perdon.

Pero el guion bajo antes del comodin si es necesario. Si no lo pones no funciona.

_*.lck

Gracias
Responder Con Cita
  #4  
Antiguo 05-06-2007
mikelgaldakao mikelgaldakao is offline
Registrado
 
Registrado: jun 2007
Posts: 2
Poder: 0
mikelgaldakao Va por buen camino
Cita:
Empezado por images
Lo genial seria poder indicarle un directorio principal(el de tu aplicacion) y borrara todos
los *.XXX de ese directorio y todos sus subdirectorios.
Lo primero presentarme que soy nuevo por aqui :-). Alguien sabe como hacer esto ?? lo demas tambien me funciona perfectamente pero lo realmente interesante seria lo de los subdirectorios.
No me refiero a copiar subdirectorios , sino a copiar los *.xxx de todos los subdirectorios.
salu2!
Responder Con Cita
  #5  
Antiguo 11-06-2007
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Sería cuestión de buscar los subdirectorios mediante la función FindFirst, y llamar a la función tantas veces como haga falta.
Responder Con Cita
  #6  
Antiguo 12-06-2007
mikelgaldakao mikelgaldakao is offline
Registrado
 
Registrado: jun 2007
Posts: 2
Poder: 0
mikelgaldakao Va por buen camino
Cita:
Empezado por ixMike
Sería cuestión de buscar los subdirectorios mediante la función FindFirst, y llamar a la función tantas veces como haga falta.
Muchas gracias por contestar! serias tan amable de intentar exponermelo con un ejemplo ?
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 16:42:00.


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
Copyright 1996-2007 Club Delphi