Re: [firebase-br] Pegar Versão do Firebird via SQL
Euler Jr.
euler em siginformatica.com.br
Seg Maio 23 08:51:27 -03 2005
Caro Adilson,
codifiquei este exemplo onde vc pode obter a versao do FB. Alem da versao
outras informacoes podem ser extraidas.
Abaixo segue o codigo, faça as devidas adaptacoes para suas necessidades.
{***************************************************************************
***********
GetFBVersion()
Parametros:
PathFileName - localizacao da biblioteca fbclient
Author: Euler Jr
Date: may,2005
Language: Delphi
Este exemplo demonstra como eh simples extrair informacoes contidas em
arquivos binarios e compilados, atraves de chamadas a API do Win32.
Informe no parametros PathFileName o "caminho" do arquivo fbclient.dll.
Varias informacoes podem ser estraidas como por exemplo:
- CompanyName, ProductInformation,Comments, Build in, etc.
Enjoy !!
****************************************************************************
**********}
unit Unit1;
interface
uses
Windows, Classes, Forms, StdCtrls, Controls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TWideChar = array[0..254] of Char;
TString = packed record
wLength:Cardinal;
wValueLength:Cardinal;
wType:Cardinal;
szKey:TWideChar;
Padding:Cardinal;
Value:TWideChar;
end;
TStringTable = packed record
wLength:Cardinal;
wValueLength:Cardinal;
wType:Cardinal;
szKey:TWideChar;
Children:TString;
end;
TStringFileInfo = packed record
wLength:Cardinal;
wValueLength:Cardinal;
wType:Cardinal;
szKey:TWideChar;
Padding:Cardinal;
Children:TStringTable;
end;
_VS_FIXEDFILEINFO = packed record
dwSignature:Cardinal;
dwStrucVersion:Cardinal;
dwFileVersionMS:Cardinal;
dwFileVersionLS:Cardinal;
dwProductVersionMS:Cardinal;
dwProductVersionLS:Cardinal;
dwFileFlagsMask:Cardinal;
dwFileFlags:Cardinal;
dwFileOS:Cardinal;
dwFileType:Cardinal;
dwFileSubtype:Cardinal;
dwFileDateMS:Cardinal;
dwFileDateLS:Cardinal;
end;
_VS_VERSION_INFO = packed record
wLength:Cardinal;
wValueLength:Cardinal;
wType:Cardinal;
szKey:TWideChar;
Padding1:Cardinal;
Value:_VS_FIXEDFILEINFO;
Padding2:Cardinal;
Children:TStringFileInfo;
end;
PVsVersionInfo = ^_VS_VERSION_INFO;
PFixedFileInfo = ^_VS_FIXEDFILEINFO;
var
Form1: TForm1;
// pega a versao do FB e + informacoes
function GetFBVersion(PathFileName:AnsiString):AnsiString;
implementation
{$R *.dfm}
function WideCharToString( AValue:TWideChar ):AnsiString;
var
j:Cardinal;
begin
Result := '';
for j := 0 to Length( AValue ) do begin
if( ( Ord( AValue[ j ] ) > 31 ) and ( Ord( AValue[ j ] ) < 121 ) )
then
Result := ( Result + AValue[ j ] );
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := GetFBVersion( 'c:\windows\system\fbclient.dll' );
end;
function GetFBVersion(PathFileName:AnsiString):AnsiString;
var
lpData: PVsVersionInfo;
lpBuffer: PFixedFileInfo;
puLen, dwLen, dwHandle: Cardinal;
StringFileInfo: TStringFileInfo;
SString:TString;
StringTable:TStringTable;
j: Integer;
begin
Result := '';
dwLen := GetFileVersionInfoSize( PChar( PathFileName ), dwHandle );
GetMem( lpData, 4096 );
if ( GetFileVersionInfo( PChar( PathFileName ), 0, dwLen, lpData ) ) then
begin
if ( VerQueryValue( @lpData, '\', Pointer( lpBuffer ), puLen ) ) then
begin
Result := WideCharToString(
lpData^.Children.Children.Children.Value );
j := Pos( ':', Result );
Result := Copy( Result, Length( 'ProductVersion' ) + 1, j -
Length( 'ProductVersion' ) - 1 );
end;
end;
FreeMem( lpData );
end;
end.
Ate +
Euler Jr.
----- Original Message -----
From: "Adilson B. Cápua Jr." <juniorcapua em yahoo.com.br>
To: "Firebase" <Lista em firebase.com.br>
Sent: Thursday, May 19, 2005 10:13 PM
Subject: [firebase-br] Pegar Versão do Firebird via SQL
PessoALL,
Estou implementando uma espécie de LOG do meu programa e agora
estou precisando pegar a versão do Firebird que está sendo executada
no servidor!!! Tem como??? Estou usando DBX + Delphi 7!!!!
Forte Abraço,
+---------------------------------------+
Adilson Bragança Cápua Jr.
Linhares - ES Brasil
mailto : juniorcapua em yahoo.com.br
juniorcapua em gmail.com
Mobile : abcjr em oi.com.br
Messenger : juniorcapua em hotmail.com
Blogger : www.dellas.rg3.net
+---------------------------------------+
Save a tree! Send an e-mail!
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista