[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