PDA

Ver la Versión Completa : Borrar carpetas en delphi7


Kivan
10-05-2005, 12:12:55
Hola de nuevo, mi duda ahora es saber si hay alguna forma de borrar una carpeta en delphi aun ésta conteniendo archivos dentro. Estaria muy muy agradecido si me pudierais decir la forma de hacerlo. Muchisimas gracias a todos

FDB
10-05-2005, 12:19:45
Buenas!

Te suguiero que uses la opcion "busqueda" del foro, puesto que este tema está hablado en varios hilos. Busca por ejemplo "borrar directorio" y verás diversos temas que tratan tu mismo problema.

Y ya de camino hechale un vistazo a la guia de estilo.

Saludos!

Kivan
10-05-2005, 12:24:29
Gracias por la sugerencia, no se me habia ocurrio mirar :p.

Neftali [Germán.Estévez]
10-05-2005, 12:29:09
Busca en la sección de trucos del Clubdelphi, recuerdo que hay dos que tienen el código necesario para realizar eso. Si la memoria no me falla 333 y 310.

Kivan
10-05-2005, 12:35:32
Muxas gracias por la informacion, pero komo puedo buscar un numero especifico de un truco??

FDB
10-05-2005, 13:00:04
Aquí lo tienes..

http://www.clubdelphi.com/vertruco.php?id=310

y

http://www.clubdelphi.com/vertruco.php?id=333

Kivan
10-05-2005, 16:43:34
Muxas gracias de nuevo FDB. Espero que con esto se me resuelva el problemilla que se me habia planteado.

roman
10-05-2005, 16:54:19
Aquí (http://www.clubdelphi.com/foros/showpost.php?p=58684&postcount=3) hay otra forma de borrar una carpeta con todo y sus archivos y subcarpetas de un sólo golpe.

// Saludos

Kivan
10-05-2005, 18:23:09
Muchas gracias Roman esto me funciona a la perfeccion cuando le meto directamente la ruta en la funcion (ej: deletefolder ('.\data\edit'); ), pero en cambio cuando le asigno el valor del string mediante una variable
(ej : cadena:= '.\data\edit';
deletefolder (cadena); )
me da un fallo que me dice lo siguiente : No se puede eliminar Archivo: No se puede leer del disco o archivo de origen , No entiendo el por qué de ese fallo cuando se supone que a la funcion le pasas el mismo string. Me podrian dar una explicacion? Gracias.

Kivan
11-05-2005, 16:54:58
Ya he resuelto mi duda al final he usado la siguiente funcion:

--------------------------------------------------------------------------

uses ShellAPI;

Function DelTree(DirName : string): Boolean;
var
SHFileOpStruct : TSHFileOpStruct;
DirBuf : array [0..255] of char;
begin
try
Fillchar(SHFileOpStruct,Sizeof(SHFileOpStruct),0) ;
FillChar(DirBuf, Sizeof(DirBuf), 0 ) ;
StrPCopy(DirBuf, DirName) ;
with SHFileOpStruct do begin
Wnd := 0;
pFrom := @DirBuf;
wFunc := FO_DELETE;
fFlags := FOF_ALLOWUNDO;
fFlags := fFlags or FOF_NOCONFIRMATION;
fFlags := fFlags or FOF_SILENT;
end;
Result := (SHFileOperation(SHFileOpStruct) = 0) ;
except
Result := False;
end;
end;

--------------------------------------------------------------------------

Espero que en un futuro le sirva a la gente como me ha servido a mi. Gracias de nuevo por la ayuda que me habeis proporcionado.

Dragon
09-12-2005, 21:37:28
Hola a todos estoy usando esas funciones que han comentado porque quiero borrar todos los dias unas carpetas con sus archivos y lo ejecuto mediante las tareas de windows.

El problema es que cuando la sesión del ordenador es la de administrador todo funciona bien pero cuando es un usuario avansado o usuario el programa se ejecuta pero no hace nada.

Tienen idea de como solucionar esto???.
Ya les estoy dando las gracias.

DarKraZY
10-12-2005, 14:29:45
¿¿Es posible que este usuario que comentas (que tiene los permisos de usuario y usuario avanzado) no tenga permiso de escritura sobre esa carpeta??

Dragon
12-12-2005, 19:26:44
Hola de nuevo, el usuario si tiene permiso en esa carpeta para guarda, leer y borrar en todas las que se encuentren dentro de ella.
Gracias.