Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Borrado de un directorio (https://www.clubdelphi.com/foros/showthread.php?t=20943)

quake2420 01-05-2005 12:05:56

Borrado de un directorio
 
Holas amigos.
Mi problema es el siguiente cunado cierro una aplicacion tengo que borrar el contenido de un directorio y todo lo que hay dentro de él, como lo tengo hecho me borra el contenido del directorio pero el directorio no se borra, el error que me da es el I/O Error 145, el cual significa que el directorio esta vacio, tampoco hay archivos ocultos, aqui os muestro el procedimiento:

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
var
i:integer;
diractual:boolean;
begin
Close;
//Borramos los archivos temporales usados
Deletefile(PChar(contmp));
Deletefile(PChar(temporalwpa));
Deletefile(PChar(estilotmp));
//Borramos de la carpeta plantillaswpa el archivo estilo.css si existe
if FileExists(ExtractFilePath(Application.ExeName)
+ 'plantillaswpa\estilo.css') then
begin
DeleteFile(PChar(ExtractFilePath(Application.ExeName)
+ 'plantillaswpa\estilo.css'));
end;
if DirectoryExists(PChar(ExtractFilePath(Application.ExeName)
+'plantillaswpa\imgs')) then
begin
for i:=1 to ndiapos do
begin
deletefile(PChar(ExtractFilePath(Application.ExeName)
+ 'plantillaswpa\imgs\' + 'tmp' + IntToStr(i) + '.jpg'));
end;
diractual:=SetCurrentDir(ExtractFilePath(Application.ExeName)
+ 'plantillaswpa');
RmDir(ExtractFilePath(Application.ExeName)
+ 'plantillaswpa\imgs\');
end;
end;


Gracias por adelantado

Pablo Carlos 01-05-2005 14:27:58

Hola... con este código puedes eliminar un directorio y su contenido, pero ojo que no va a la papelera :D :D
Para mostrar código usa las etiquetas delphi --> [ delphi ] al comenzar y --> [ /delphi ] al finalizar (sin los espacios), verás que es mucho más comoda la lectura.
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 DirInfo: TSearchRec;
 r : Integer;
begin
 r := FindFirst('C:\MiDirectorio\*.*', FaAnyfile, DirInfo);
 while r = 0 do  begin
   if ((DirInfo.Attr and FaDirectory <> FaDirectory) and
     (DirInfo.Attr and FaVolumeId <> FaVolumeID)) then
      if DeleteFile(pChar('C:\MiDirectorio\' + DirInfo.Name)) = false then
       ShowMessage('No se puede borrar: ' C:\MiDirectorio\ + DirInfo.Name);
       r := FindNext(DirInfo);
 end;
   SysUtils.FindClose(DirInfo);
   if RemoveDirectory('C:\MiDirectorio') = false then
    ShowMessage('No se puede borrar el directorio: ' C:\MiDirectorio);
end;
end.
Feliz día del trabajador a todos/as :)
Saludos

Neftali [Germán.Estévez] 02-05-2005 09:45:38

También puedes probar con un par de trucos que hay en la sección de Trucos del club Delphi:
http://www.clubdelphi.com/trucos.php

El 333 y el 310 se refieren a borrar un directorio completo. Puedes echarles un vistazo a ver si te dan alguna idea diferente.


La franja horaria es GMT +2. Ahora son las 23:45:17.

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