!3d1@n
25-02-2005, 21:55:08
Holas por aca :
Ojala me puedan ayudar. Les explico:
Estoy haciendo una aplicación en Delphi 6, con mi Base de Datos en Access a la cual me conecto con ADO. El problema consiste a la hora de realizar la salva de la Base de Datos. Esta la comparto con el ARJ y la pico en pedazos de 1256Kb (para que me quepan en disquetes) y esos archivos que obtengo los guardo en una carpeta para despues irlos copiando respectivamente para los disquetes, utilizando la función CopyFileTo().
Tengo un TAnimate, 3 Label, 1 Gauge, 1 BitBtn
procedure TProSalResForm.FormActivate(Sender: TObject);
var
i, Len, GProg : integer;
begin
Cont := CuentaArchivos('C:\Ledian\Salva');
Len := Length(IntToStr(CuentaArchivos('C:\Ledian\Salva')));
GProg := 100 div CuentaArchivos('C:\Ledian\Salva');
if Len <> 0 then
begin
ShowMessage('Inserte disquete y luego presione ok');
Animate1.Active := True;
Label3.Caption := 'DISK.ARJ';
CopyFileTo('C:\Ledian\Salva\DISK.ARJ','A:\DISK.ARJ');
ProSalResForm.Gauge1.Progress := ProSalResForm.Gauge1.Progress + GProg;
Cont := Cont - 1;
Label2.Caption := 'Quedan ' + IntToStr(Cont) + ' disquete(s)';
Animate1.Active := false;
for i := 1 to CuentaArchivos('C:\Ledian\Salva') - 1 do
begin
if Len = 1 then
begin
ShowMessage('Inserte disquete y luego presione ok');
Animate1.Active := True;
Label3.Caption := 'DISK.A0' + IntToStr(i);
CopyFileTo('C:\Ledian\Salva\DISK.A0' + IntToStr(i),'A:\DISK.A' + IntToStr(i));
ProSalResForm.Gauge1.Progress := ProSalResForm.Gauge1.Progress + GProg;
Cont := Cont - 1;
Label2.Caption := 'Quedan ' + IntToStr(Cont) + ' disquete(s)';
Animate1.Active := false;
end
else
if i < 10 then
begin
ShowMessage('Inserte disquete y luego presione ok');
Animate1.Active := True;
Label3.Caption := 'DISK.A0' + IntToStr(i);
CopyFileTo('C:\Ledian\Salva\DISK.A0' + IntToStr(i),'A:\DISK.A0' + IntToStr(i));
ProSalResForm.Gauge1.Progress := ProSalResForm.Gauge1.Progress + GProg;
Cont := Cont - 1;
Label2.Caption := 'Quedan ' + IntToStr(Cont) + ' disquete(s)';
Animate1.Active := false;
end
else
begin
ShowMessage('Inserte disquete y luego presione ok');
Animate1.Active := True;
Label3.Caption := 'DISK.A' + IntToStr(i);
CopyFileTo('C:\Ledian\Salva\DISK.A' + IntToStr(i),'A:\DISK.A' + IntToStr(i));
ProSalResForm.Gauge1.Progress := ProSalResForm.Gauge1.Progress + GProg;
Cont := Cont - 1;
Label2.Caption := 'Quedan ' + IntToStr(Cont) + ' disquete(s)';
Animate1.Active := false;
end;
end;
Gauge1.Progress := 100;
Label3.Caption := 'Concluida la Restaura';
BitBtn1.Caption := 'Cerrar';
end;
end;
No se que es lo que pasa que cuando empieza a copiar se me pierde partes de la ventana y me aparecen pedazos en blanco, todo esto hasta que me sale nuevamente el mensaje de 'Inserte disquete y luego presione ok' que me vuelve la ventana o incluso solo sale el mensaje y adios ventana; pero lo mas curioso de todo esto es que le cambie el camino de destino para el disco duro C:\Ledian\SalDisk\ ... y esto no ocurre.
¿Alguién sabrá que es o que hago mal ?
Por favor no se si este adgoritmo sea el mas correcto para obtener lo que quiero, asi que acepto opiniones y criterios.
nota : Es 1ra vez que hago algo como esto.
De antemano gracias.
Un servidor.
Ojala me puedan ayudar. Les explico:
Estoy haciendo una aplicación en Delphi 6, con mi Base de Datos en Access a la cual me conecto con ADO. El problema consiste a la hora de realizar la salva de la Base de Datos. Esta la comparto con el ARJ y la pico en pedazos de 1256Kb (para que me quepan en disquetes) y esos archivos que obtengo los guardo en una carpeta para despues irlos copiando respectivamente para los disquetes, utilizando la función CopyFileTo().
Tengo un TAnimate, 3 Label, 1 Gauge, 1 BitBtn
procedure TProSalResForm.FormActivate(Sender: TObject);
var
i, Len, GProg : integer;
begin
Cont := CuentaArchivos('C:\Ledian\Salva');
Len := Length(IntToStr(CuentaArchivos('C:\Ledian\Salva')));
GProg := 100 div CuentaArchivos('C:\Ledian\Salva');
if Len <> 0 then
begin
ShowMessage('Inserte disquete y luego presione ok');
Animate1.Active := True;
Label3.Caption := 'DISK.ARJ';
CopyFileTo('C:\Ledian\Salva\DISK.ARJ','A:\DISK.ARJ');
ProSalResForm.Gauge1.Progress := ProSalResForm.Gauge1.Progress + GProg;
Cont := Cont - 1;
Label2.Caption := 'Quedan ' + IntToStr(Cont) + ' disquete(s)';
Animate1.Active := false;
for i := 1 to CuentaArchivos('C:\Ledian\Salva') - 1 do
begin
if Len = 1 then
begin
ShowMessage('Inserte disquete y luego presione ok');
Animate1.Active := True;
Label3.Caption := 'DISK.A0' + IntToStr(i);
CopyFileTo('C:\Ledian\Salva\DISK.A0' + IntToStr(i),'A:\DISK.A' + IntToStr(i));
ProSalResForm.Gauge1.Progress := ProSalResForm.Gauge1.Progress + GProg;
Cont := Cont - 1;
Label2.Caption := 'Quedan ' + IntToStr(Cont) + ' disquete(s)';
Animate1.Active := false;
end
else
if i < 10 then
begin
ShowMessage('Inserte disquete y luego presione ok');
Animate1.Active := True;
Label3.Caption := 'DISK.A0' + IntToStr(i);
CopyFileTo('C:\Ledian\Salva\DISK.A0' + IntToStr(i),'A:\DISK.A0' + IntToStr(i));
ProSalResForm.Gauge1.Progress := ProSalResForm.Gauge1.Progress + GProg;
Cont := Cont - 1;
Label2.Caption := 'Quedan ' + IntToStr(Cont) + ' disquete(s)';
Animate1.Active := false;
end
else
begin
ShowMessage('Inserte disquete y luego presione ok');
Animate1.Active := True;
Label3.Caption := 'DISK.A' + IntToStr(i);
CopyFileTo('C:\Ledian\Salva\DISK.A' + IntToStr(i),'A:\DISK.A' + IntToStr(i));
ProSalResForm.Gauge1.Progress := ProSalResForm.Gauge1.Progress + GProg;
Cont := Cont - 1;
Label2.Caption := 'Quedan ' + IntToStr(Cont) + ' disquete(s)';
Animate1.Active := false;
end;
end;
Gauge1.Progress := 100;
Label3.Caption := 'Concluida la Restaura';
BitBtn1.Caption := 'Cerrar';
end;
end;
No se que es lo que pasa que cuando empieza a copiar se me pierde partes de la ventana y me aparecen pedazos en blanco, todo esto hasta que me sale nuevamente el mensaje de 'Inserte disquete y luego presione ok' que me vuelve la ventana o incluso solo sale el mensaje y adios ventana; pero lo mas curioso de todo esto es que le cambie el camino de destino para el disco duro C:\Ledian\SalDisk\ ... y esto no ocurre.
¿Alguién sabrá que es o que hago mal ?
Por favor no se si este adgoritmo sea el mas correcto para obtener lo que quiero, asi que acepto opiniones y criterios.
nota : Es 1ra vez que hago algo como esto.
De antemano gracias.
Un servidor.