Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Borrando en cadena (https://www.clubdelphi.com/foros/showthread.php?t=13328)

igest2000 14-08-2004 13:33:07

Borrando en cadena
 
Saludos a todos!!

Estoy desarrollando una pequeña herramienta para la catalogación de imagenes gif y me he encontrado cun un pequeño problema qyue me gustaria ver si podéis ayudarme. Veamos os pongo en situacion:

En el programa pueden organizarse categorias de forma jerárquica, lo que significa tener categorias con subcategorias asociadas y asi sucesivamente sin ningún límite. Bien cada categoria implica tener una carpeta física en el disco duro. Y cada una de estas categorias pueden contener las imagenes en formato gif.

El problema se me plantea con el borrado, utilizando la fuincion RemoveDir. COmo sabréis, esta funcion me permite borrar un directorio, siempre y cuando este este vacio. Bien, la funcion de borrado me borra todos los archivos de imagen que contengan las carpetas, pero resulta que las carpetas no se borran. ¿Será quizas por los archivos ocultos que crea el WXP para catalogar las imagenes?

En fin, lo que necesito en definitiva es crear una funcion que me permita realizar un borrado en cadena a partir de un directorio dado, para lo cual si me podéis echar una mano os estare muy agradecido.

Saludos y gracias de antemano por al menos haber leido el post.

VolaRe 14-08-2004 13:39:58

¿Que funcion de borrado de archivos usas?
Te recomiendo que primero uses FindFirst, FindNext y FindClose y cuando hayas acabado con esas funciones uses esa funcion de borrado de directorio (RemoveDir). Puedes buscar en la ayuda de delphi que te esplica muy bien como usar esas tres funciones que te he comentado.
Suerte compañero :D

roman 14-08-2004 19:24:51

Una manera de borrar toda una carpeta sin necesidad de recorrer recursivamente todas las subcarpetas es utilizando la función ShFileOperation:

Código Delphi [-]
uses
  ShellApi;

procedure DeleteFolder(Folder: String);
var
  FileOpInfo: TShFileOpStruct;

begin
  FillChar(FileOpInfo, SizeOf(FileOpInfo), 0);
  FileOpInfo.wFunc := FO_DELETE;
  FileOpInfo.pFrom := PChar(Folder);
  FileOpInfo.fFlags := FOF_NOCONFIRMATION;

  ShFileOperation(FileOpInfo);
end;

// Saludos


La franja horaria es GMT +2. Ahora son las 05:13:49.

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