Foros Club Delphi

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

kapullok_2006 21-11-2007 18:10:47

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?:confused:
Estoy desesperado.Espero que me sujiráis algo.
Saludos.

enecumene 21-11-2007 21:51:34

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:confused::confused:.

Saludos.

cHackAll 21-11-2007 22:05:08

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.

cHackAll 21-11-2007 22:16:40

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!

enecumene 21-11-2007 22:19:05

Muy buena Chackall, queda mucho mejor;).

Saludos.

kapullok_2006 22-11-2007 10:56:09

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.


La franja horaria es GMT +2. Ahora son las 12:19:47.

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