Estimado amigos:
Me he dado cien vueltas tratando de crear un form para respaldar una base de datos. El método copyfile no funciona, posiblemente por la extensión del archivo (.abs). Encontré un código que utiliza la ShellApi que si copia el archivo,sin embargo lo copia en la carpeta del ejecutable y no en la ruta señalada, creando un archivo que no posee la extensión requerida. Al cambiar el nombre y extensión de dicho archivo manualmente, corresponde perfecto al que quiero copiar.
Como este código utiliza la ShellApi y no obtuve respuesta en otra sección, encontré conveniente crear un nuevo hilo en la sección correspondiente :
Código Delphi
[-]var
Fos : TSHFileOpStruct;
Buf : array[0..4096] of char;
p : pchar;
sDest : string;
procedure TBackup.Button1Click(Sender: TObject);
begin
ABSRegistros.Connected :=False;
FillChar(Buf, sizeof(Buf), #0) ;
p := @buf;
p := StrECopy(p,'C:\Windows\Regsdata\Registros.abs');
sDest := 'e:\';
FillChar(Fos, sizeof(Fos), #0) ;
with Fos do
begin
Wnd := Handle;
wFunc := FO_COPY;
pFrom := @Buf;
pTo := @sDest;
fFlags := 0;
end;
if ((SHFileOperation(Fos) <> 0) or (Fos.fAnyOperationsAborted <> false)) then
Message1.MessageDlg('Error al copiar el archivo',mtWarning, [mbOK], 0);
end;
Con la primera línea desconecto la base de datos.
Luego al ejecutar el código me genera los siguientes errores:
- A pesar que el destino es la Unidad E, copia el archivo Registros.abs en la carpeta del ejecutable.
- Crea un archivo sin extensión cuyo nombre son tres caracteres cualquiera y no el nombre y extensión del archivo.
¿Puede alguien por favor ayudarme a corregir el código ?
¿ Es posible con un edit definir la carpeta de destino ?
Saludos y muchas gracias