[firebase-br] Gfix: Como gerar um log com o resultado do Gfix

Renato Bermudo renato em eficazinformatica.com.br
Qua Jan 21 14:28:50 -03 2009


Olá!
O exemplo que vc passou funciona para tudo quanto é programa, menos para o 
GFIX.
O que será que acontece com ele?
Já tentei várias outras opções, mas não obtive sucesso.
O engraçado que o IBExpert consegue capturar, o que será que utilizaram?
Se tiver alguma outra sugestão agradeço.

----- Original Message ----- 
From: "Elton da Motta Barbosa" <embarbosa em gmail.com>
To: <lista em firebase.com.br>
Sent: Wednesday, January 21, 2009 9:40 AM
Subject: [firebase-br] Gfix: Como gerar um log com o resultado do Gfix


Olá Renato,

  me parece que os retornos do gfix não podem ser enviados para um
arquivo *.txt desta forma.
Eu tentei fazer isso mesmo com simples comandos e não deu certo. Mas
talvez vc possa tentar capturar o resultado para um memo da seguinte
forma:

//Nota: esse exemplo foi copiado de Zarko Gajic, About.com

The example runs 'chkdsk.exe c:\' and displays the output to Memo1.
Put a TMemo (Memo1) and a TButton (Button1) on your form. Put this
code in the OnCLick event procedure for Button1:
~~~~~~~~~~~~~~~~~~~~~~~~~
procedure TForm1.Button1Click(Sender: TObject) ;

  procedure RunDosInMemo(DosApp:String;AMemo:TMemo) ;
  const
     ReadBuffer = 2400;
  var
   Security : TSecurityAttributes;
   ReadPipe,WritePipe : THandle;
   start : TStartUpInfo;
   ProcessInfo : TProcessInformation;
   Buffer : Pchar;
   BytesRead : DWord;
   Apprunning : DWord;
  begin
   With Security do begin
    nlength := SizeOf(TSecurityAttributes) ;
    binherithandle := true;
    lpsecuritydescriptor := nil;
   end;
   if Createpipe (ReadPipe, WritePipe,
                  @Security, 0) then begin
    Buffer := AllocMem(ReadBuffer + 1) ;
    FillChar(Start,Sizeof(Start),#0) ;
    start.cb := SizeOf(start) ;
    start.hStdOutput := WritePipe;
    start.hStdInput := ReadPipe;
    start.dwFlags := STARTF_USESTDHANDLES +
                         STARTF_USESHOWWINDOW;
    start.wShowWindow := SW_HIDE;

    if CreateProcess(nil,
           PChar(DosApp),
           @Security,
           @Security,
           true,
           NORMAL_PRIORITY_CLASS,
           nil,
           nil,
           start,
           ProcessInfo)
    then
    begin
     repeat
      Apprunning := WaitForSingleObject
                   (ProcessInfo.hProcess,100) ;
      Application.ProcessMessages;
     until (Apprunning <> WAIT_TIMEOUT) ;
      Repeat
        BytesRead := 0;
        ReadFile(ReadPipe,Buffer[0],
ReadBuffer,BytesRead,nil) ;
        Buffer[BytesRead]:= #0;
        OemToAnsi(Buffer,Buffer) ;
        AMemo.Text := AMemo.text + String(Buffer) ;
      until (BytesRead < ReadBuffer) ;
   end;
   FreeMem(Buffer) ;
   CloseHandle(ProcessInfo.hProcess) ;
   CloseHandle(ProcessInfo.hThread) ;
   CloseHandle(ReadPipe) ;
   CloseHandle(WritePipe) ;
   end;
  end;

  begin {button 1 code}
    RunDosInMemo('chkdsk.exe c:\',Memo1) ;
  end;
~~~~~~~~~~~~~~~~~~~~~~~~~


Se der certo vc avisa ok?
Até,



>Olá!
>Eu tenho um banco corrompido, utilizando o gfix (gfix -v -full
>banco.fdb -user SYSDBA -password masterkey) á apresentado a seguinte
>mensagem de erro:
>Summary of validation erros
>Number of record level errors : 1

>Já tentei as dicas passadas:
>gfix -v -full dados.fdb -user SYSDBA -password masterkey >> arquivo.txt
>gfix -v -full dados.fdb -user SYSDBA -password masterkey > arquivo.txt
>
>Com essas dicas o gfix cria o arquivo.txt, mas não apresenta conteúdo
>nenhum.
>Com o gbak ele grava perfeitamente
>
>Utilizo a versão Firebird 1.5.5.4926 rodando como serviço sobre windows xp.
>
>Se alguém tiver mais alguma dica, agradeço.

______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 





Mais detalhes sobre a lista de discussão lista