Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-11-2007
kapullok_2006 kapullok_2006 is offline
Miembro
 
Registrado: mar 2007
Posts: 90
Poder: 18
kapullok_2006 Va por buen camino
Unhappy Problemas con borrar directorio

Hola,he probado los trucos de la página y me dan errores,pues las funciones
que usan en el borrado de directorios,no las encuentra mi delphi 6.
Mi problema está este código:
Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
var
directorio_medio2,directorio_fecha:string;
 DirInfo: TSearchRec;
 r : Integer;


begin

       r := FindFirst('C:\MEDIOS\MEDIO2\*.*', FaAnyfile, DirInfo);
             while r = 0 do  begin
               if ((DirInfo.Attr and FaDirectory <> FaDirectory) and
                   (DirInfo.Attr and FaVolumeId <> FaVolumeID)) then
                 if DeleteFile(pChar('C:\MEDIOS\MEDIO2\' + DirInfo.Name))
                    = false then
                  {Si no puede borrar el fichero}
                  ShowMessage('Unable to delete : C:\MEDIOS\MEDIO2\' +
                              DirInfo.Name);
              r := FindNext(DirInfo);
            end;
            SysUtils.FindClose(DirInfo);
             //AQUI FALLA,NO BORRA DIRECTORIO MEDIOS
             if RemoveDir('C:\MEDIOS\MEDIO2\') = false then

                {Si no puedes borrar el directorio}
               ShowMessage('Unable to delete dirctory : C:\MEDIOS\MEDIO2');



     

       directorio_medio2:='C:\MEDIOS\MEDIO2\';
       directorio_fecha:=IntToStr(Trunc(Now*24*3600*60));
       //C:\MEDIOS\MEDIO2\4234232
       directorio_medio2:=directorio_medio2+directorio_fecha;

       //Crea la ruta anterior
       ForceDirectories(directorio_medio2);

       //traspasa el fichero de un lado para otro
      //Obtendría por Ejemplo:C:\MEDIOS\MEDIO2\4234232\foto_a_imprimir.bmp CopyFile(PChar('C:\FOTO_PARA_IMPRIMIR\foto_a_imprimir.bmp'),PChar(directorio_medio2+'\'+'foto_a_impr  imir.bmp'),false);

end;

Quiero que cada vez que pincho un boton,me lo borre entero,incluido sus
subdirectorios y archivos.
El problema es que no borra C:\MEDIOS,por lo que me crea el directorio_fecha con el fichero bmp en C:\MEDIOS\MEDIO2, cada vez que pincho boton.

¿ALguna opcion,que funcione para este ejemplo?
Estoy desesperado.Espero que me sujiráis algo.
Saludos.
Responder Con Cita
  #2  
Antiguo 21-11-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Hola, Yo Particularmente no le veo nada fuera de lo comun a excepcion de donde RemoveDir creo que va RemoveDirectory, despues de esto no veo otra cosa mas.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #3  
Antiguo 21-11-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Bueno, yo le añadiría ántes del DeleteFile un SetFileAttributes(pChar('C:\MEDIOS\MEDIO2\' + DirInfo.Name), FILE_ATTRIBUTE_NORMAL). Puesto que con tu función no puedes borrar archivos ocultos, de sistema o protegidos.
Responder Con Cita
  #4  
Antiguo 21-11-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Acoto... para borrar una carpeta incluyendo las sucarpetas debes hacer una funcion recursiva para borrar las carpetas que estén en las carpetas de las carpetas...

Código Delphi [-]
procedure DelTree(Path: string);
var sr: TSearchRec; FileName: string;
begin
 if not LongBool(FindFirst(Path + '\*.*', faAnyFile, sr)) then
  repeat
   FileName := Path + '\' + sr.Name;
   if not LongBool(sr.Attr and faDirectory) then
    begin
     SetFileAttributes(PChar(FileName), FILE_ATTRIBUTE_NORMAL);
     DeleteFile(PChar(FileName));
    end
   else
    if (sr.Name <> '.') and (sr.Name <> '..') then
     DelTree(FileName);
  until LongBool(FindNext(sr));
 RemoveDirectory(PChar(FileName));
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 DelTree(Edit1.Text);
end;

Así está mejor, pero mucho cuidado!
Responder Con Cita
  #5  
Antiguo 21-11-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Muy buena Chackall, queda mucho mejor.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #6  
Antiguo 22-11-2007
kapullok_2006 kapullok_2006 is offline
Miembro
 
Registrado: mar 2007
Posts: 90
Poder: 18
kapullok_2006 Va por buen camino
Question aún no está a punto

Tu ejemplo de Deltree sólo me permite borrar los ficheros del directorio padre
C:\MEDIOS.Lo que Faltaría sería borrar las subcarpetas del directorio padre.

Voy ha hecharle un vistazo a tu código detalladamente haber si saco algo bueno.

Saludos.
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Borrar un directorio con contenido Mariana Varios 9 27-02-2008 09:59:53
borrar archivos de un directorio kapullok_2006 Varios 4 21-11-2007 10:54:25
Borrar archivos de un directorio nelem Internet 6 29-10-2007 16:04:00
Vaciar el contenido de un directorio (Borrar *.*) Gelmin Varios 1 22-07-2004 20:21:50
Borrar archivos de un directorio Magneto Varios 1 13-08-2003 13:20:34


La franja horaria es GMT +2. Ahora son las 12:44:03.


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