FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Borrar un directorio con contenido
Hola a todos, esta vez mi pregunta es si existe algún comando para borrar un directorio con todo su contenido, ya que con rmdir(), solo me permite borrar si no contiene nada.
Muchas Gracias. Mariana |
#2
|
||||
|
||||
Prueba con esta función:
Código:
procedure Tselecdir.borrarClick(Sender: TObject); procedure borradentro(directorio:string); var n:integer; Rbusqueda : TSearchRec; begin n := FindFirst(directorio+'\*.*',faanyfile, Rbusqueda); while n=0 do begin if (rbusqueda.Name <> '..') and (rbusqueda.Name <> '.') then begin if (rbusqueda.Attr = faDirectory) then begin borradentro(directorio+'\'+rbusqueda.Name); rmdir(directorio+'\'+rbusqueda.Name); end else deletefile(directorio+'\'+Rbusqueda.name) ; end; n := FindNext(Rbusqueda); end; end; var diractivo:string; begin //hago el de defecto el padre, sino.. error I/O16 chdir('..'); GetDir(0,diractivo); borradentro(DirectLB.directory ); rmdir(DirectLB.directory); DirectLB.directory := diractivo; end;
__________________
Guía de Estilo de los Foros Cita:
|
#3
|
|||
|
|||
Hola Mariana, si el codigo anterior no te funciona pruebe este.
procedure TForm1.Button1Click(Sender: TObject); var DirInfo: TSearchRec; r : Integer; begin r := FindFirst('C:\Download\Test\*.*', FaAnyfile, DirInfo); while r = 0 do begin if ((DirInfo.Attr and FaDirectory <> FaDirectory) and (DirInfo.Attr and FaVolumeId <> FaVolumeID)) then if DeleteFile(pChar('C:\Download\test\' + DirInfo.Name)) = false then {Si no puede borrar el fichero} ShowMessage('Unable to delete : C:\Download\test\' + DirInfo.Name); r := FindNext(DirInfo); end; SysUtils.FindClose(DirInfo); if RemoveDirectory('C:\Download\Test') = false then {Si no puedes borrar el directorio} ShowMessage('Unable to delete dirctory : C:\Download\test'); end; Espero te sirva.
__________________
Siempre hay un primer momento para todo. |
#4
|
||||
|
||||
Solo para agregar un poco de código al "repositorio" del foro, recién desarrollé esto:
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
||||
|
||||
Pues otro más para la colección:
// Saludos |
#6
|
|||
|
|||
Correción de código
nada que ver
disculpa Última edición por serg fecha: 23-02-2008 a las 00:26:53. |
#7
|
||||
|
||||
No entendi..... ¿hay algún cambio a mi código?
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#8
|
|||
|
|||
NO, ES SOLO QUE ME EQUIVOQUÉ PERDÓN. PERO SI TENGO UN PROBLEMA. NO PUEDO BORRAR EL DIRECTORIO SI RECIEN ESCRIBÍ UN ARCHIVO EN ÉL, SUPONGO QUE DEBO LIBERARLO DE MEMORIA ANTES, PORQUE WINDOWS ME DICE QUE HAY OTRO PROGRAMA USANDOLO. EL CODIGO QUE USÉ ES ESTE: Cita:
Última edición por serg fecha: 22-02-2008 a las 18:14:12. |
#9
|
||||
|
||||
No vas a poder borrar una carpeta si no puedes borrar todos los archivos contenidos por ella, y no podrás borrar un archivo si esta en uso. Si tu programa lo esta usando solo tienes que cerrar el archivo. Muchas veces sucede que hay diálogos que tienen abiertas carpetas, entonces algunas versiones de windows no te dejan borrar estos directorios por ese motivo, otra precaución puede ser cambiar el currentpath de la aplicación.
Saludos! Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#10
|
||||
|
||||
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
|
|