PDA

Ver la Versión Completa : Manejar carpetas con delphi...


jorgegetafe
30-09-2007, 11:17:03
Saludos, quiero hacer un programa que haga copias de seguridad de una carpeta y todo lo que este dentro de ella, (copiar y pegar vamos...) la pega es que sé copiar archivos con delphi pero no carpetas, asi que me gustaría saber como hacer esto:

-copiar carpetas (con todo su contenido)
-pegar carpetas
-renombrar carpetas
-pegar carpeta en una ruta dada.
-eliminar carpetas y todo su interior.

En un principio el programa que voy a crear y la carpeta que quiero copiar están en el mismo directorio.

Muchas gracias.

dec
30-09-2007, 11:59:18
Hola,

Busca en los trucos (http://www.clubdelphi.com/trucos/), los foros (http://www.clubdelphi.com/foros/search.php) y la ayuda de Delphi sobre "TSHFileOpStruct". Lo que no puedas hacer coméntalo por aquí. :)

jorgegetafe
02-10-2007, 18:03:54
Muchas gracias, encontré justo lo que quería aqui: http://www.q3.nu/trucomania/truco.cgi?325&esp

tan solo una cosita, dice arriba del todo que se puede mostrar el progreso de la copia, me gustaría hacer eso, he mirado la ayuda de delphi y no entiendo nada... :-( alguien me puede decir como se hace eso?



Por cierto, la copia de seguridad la quiero hacer en pendrive (origen y destino en el mismo usb) como lo puedo hacer? ya que en un ordenador la ruta sera por ejemplo:

'G:\Documentos' y si meto el mismo pendrive en otro ordenador puede ser: 'D:\Documentos' y claro, error!!!! como puedo solucionar esto? gracias.

gracias.

dec
03-10-2007, 08:57:00
Hola,


tan solo una cosita, dice arriba del todo que se puede mostrar el progreso de la copia, me gustaría hacer eso, he mirado la ayuda de delphi y no entiendo nada... :-( alguien me puede decir como se hace eso?


Siguiendo el ejemplo que mencionas, se trata de jugar con las banderas (flags) en el miembro "fFlags" de la estructura "TShFileOpStruct". En la ayuda de Win32 está bastante bien explicado. Prueba con algo así:


procedure TForm1.Button1Click(Sender: TObject);

function CopiaTodo(Origen,Destino : String) :
LongInt;
var
F : TShFileOpStruct;
sOrigen, sDestino : String;
begin
Result := 0;
sOrigen := Origen + #0;
sDestino := Destino + #0;

with F do
begin
Wnd := Application.Handle;
wFunc := FO_COPY;
pFrom := @sOrigen[1];
pTo := @sDestino[1];
fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SIMPLEPROGRESS;
end;

Result := ShFileOperation(F);
end;

begin
CopiaTodo('c:\Delphi3\*.*','c:\kk');
end;



Por cierto, la copia de seguridad la quiero hacer en pendrive (origen y destino en el mismo usb) como lo puedo hacer? ya que en un ordenador la ruta sera por ejemplo:

'G:\Documentos' y si meto el mismo pendrive en otro ordenador puede ser: 'D:\Documentos' y claro, error!!!! como puedo solucionar esto? gracias.


¿Tu aplicación se ejecutará en el PenDrive? Si es así, puedes usar funciones como "GetDriveName" para averiguar la unidad ruta en que se encuentra tu publicación y a partir de ahí conformar la ruta que necesites.

Si tu aplicación no se ejecuta en el PenDrive... ahora mismo sólo se me ocurre lo más obvio: preguntar al usuario (¿hay usuario?) por la ruta en que quiere que se realize la copia de seguridad, comprobar su existencia y proceder.