[Lazarus-es] firebird: respaldar desde el programa

Paola Bruccoleri pbruccoleri en adinet.com.uy
Jue Nov 11 01:14:55 CET 2010


El 10/11/2010 10:07 p.m., Hector S. Ponce escribió:
> Paola, experimente rapidito con tu codigo y funciona bien. Ahora yo no 
> uso el path de la base sino el alias.
>
> procedure TDataModule1.BackupDB;
> var
>   BKPFolder, sNombre, sLog, sBack, sPara: string;
>   p: TProcess;
> begin
>   BKPFolder := ExtractFileDir(Application.ExeName) + '\bkp\';
>   if not DirectoryExists(BKPFolder) then
>     MkDir(BKPFolder);
>   sNombre := 'bkp_' + IBConnection1.DatabaseName + '_' +
>     FormatDateTime('yyyyMMDD_HHmmss', Now) + '.fbk';
>   sLog := 'Log_' + IBConnection1.DatabaseName + '_' +
>     FormatDateTime('yyyyMMDD_HHmmss', Now) + '.log';
>   sBack := ExtractFilePath(Application.ExeName) + 'gbak.exe';
>   sPara := ' -v -t -user ' + IBConnection1.UserName + ' -password ' +
>     IBConnection1.Password + ' -y ' + BKPFolder + sLog +
>     ' ' + IBConnection1.DatabaseName + ' ' + BKPFolder + sNombre;
>
>   if not FileExists(sBack) then
>     MessageDlg('Aviso', 'Falta ejecutable de backup', mtWarning, 
> [mbOK], 0)
>   else
>   begin
>     p := Tprocess.Create(nil);
>     p.Options := [poWaitOnExit, poNoConsole];
>     p.CommandLine := sBack + sPara;
>     p.Execute;
>     p.Free;
>     if FileExists(BKPFolder + sNombre) then
>       MessageDlg('Aviso', 'Respaldo realizado', mtWarning, [mbOK], 0)
>     else
>       MessageDlg('Aviso', 'No se pudo realizar el respaldo', 
> mtWarning, [mbOK], 0);
>   end;
> end;
Hola Héctor..
veo que tu usas la clase tProcess.. es más eficiente que hacer un 
ShellExecute?
Claro, usando shellexecute me limito solo a windows... calculo que con 
el tprocess queda multiplataforma..

chauuuuuuuu






More information about the Lazarus-es mailing list