PDA

Ver la Versión Completa : Copiar fichero con origen/destino definido por usuario


TrUnkS
26-08-2007, 19:40:27
Hola amigos. Trato de copiar mi base de datos del directorio origen a una unidad de disco definida por el usuario y con una ProgressBar para mostrar el progreso de la copia. Lo que necesito es que el usuario seleccione la unidad de destino del archivo. Tengo el siguiente código (trucomania) que copia el archivo de una unidad de origen a una destino, pero no me da la opcion para que el usuario decida donde guardar la copia del archivo. En la sección de trucos no me funciona el hilo que hay respecto al tema. Espero me haya explicado bién y agradezco cualquier ayuda, de antemano gracias.

procedure TFImportar.BBIniciarClick(Sender: TObject); // inicia la copia del archivo
var
Origen,
Destino :file of byte;
Buffer :array[0..4096] of char;
Leidos :integer;
Longitud :longint;
begin
// Abrimos fichero Origen y Destino}
AssignFile(Origen,'C:\Archivos de programa\Sistema de Facturación\Database\DBASE.fdb');
reset(Origen);
AssignFile(Destino,'C:\DBASE.fdb');
rewrite(Destino);
// Hallamos la longitud del fichero a copiar
Longitud:=FileSize(Origen);
// Actualizamos limites de la ProgressBar}
ProgressBar.Max := Longitud;
ProgressBar.Min := 0;
while Longitud >0 do
begin
BlockRead(Origen,Buffer[0],SizeOf(Buffer),Leidos);
Longitud:=Longitud - Leidos;
BlockWrite(Destino,Buffer[0],Leidos);
ProgressBar.Position:=ProgressBar.Position + Leidos;
end;
CloseFile(Origen);
CloseFile(Destino);

droguerman
26-08-2007, 19:43:29
pon dos componentes un OPenDialog y un SaveDialog y haz la siguiente modificacion


if OpenDialog1.execute then Origen := Opendialog1.filename;
if SaveDialog1.execute then destino := SaveDialog1.filename;
//aqui el resto de tu código


saludos

cHackAll
28-08-2007, 07:11:57
Creo qe lo que quiso decir droguerman era:

if OpenDialog1.execute then AssignFile(Origen, OpenDialog1.FileName);
if SaveDialog1.execute then AssignFile(Destino, SaveDialog1.FileName);