Fórum Como Fazer aparecer a versão do meu programa #364700
07/10/2008
0
Como eu faço para que eu poça capturar através de linha de código a versão do meu programa tipo 1.1.23 queria colocar a versão num label.
valeu galera
Felipemarinho
Curtir tópico
+ 0Posts
07/10/2008
Prgdelphi
primeiro você precisa determinar qual a versão do seu programa pelo menu Project -> options - Version Info.
Feito isso, para capturar essas informações em tempo de execução é só usar essa função:
procedure GetBuildInfo(var V1, V2, V3, V4: Integer); var Zero: DWORD; TamanhoVersao: DWORD; PDadosVersao: pointer; PInfoFixaArquivo: PVSFixedFileInfo; TamanhoFixoInfoArquivo: UINT; //Inteiro de 32 bits; Arquivo : String; begin Arquivo := ParamStr(0); TamanhoVersao := GetFileVersionInfoSize(pChar(Arquivo), Zero); if TamanhoVersao = 0 then begin exit; end; PDadosVersao := AllocMem(TamanhoVersao); try if GetFileVersionInfo(pChar(Arquivo), 0, TamanhoVersao, PDadosVersao) = false then begin exit; end; if VerQueryValue(PDadosVersao, ´\´, pointer(PInfoFixaArquivo), TamanhoFixoInfoArquivo) = false then begin exit; end; V1 := PInfoFixaArquivo^.dwFileVersionMS shr 16; V2 := PInfoFixaArquivo^.dwFileVersionMS and $FFFF; V3 := PInfoFixaArquivo^.dwFileVersionLS shr 16; V4 := PInfoFixaArquivo^.dwFileVersionLS and $FFFF; finally FreeMem(PDadosVersao); end; end;
Gostei + 0
07/10/2008
Brunovendas
Faça primeiro o que o amigo prgdelphi citou e depois use esta função:
function VersaoExe: String;
type
PFFI = ^vs_FixedFileInfo;
var
F : PFFI;
Handle : Dword;
Len : Longint;
Data : Pchar;
Buffer : Pointer;
Tamanho : Dword;
Parquivo: Pchar;
Arquivo : String;
begin
Arquivo := Application.ExeName;
Parquivo := StrAlloc(Length(Arquivo) + 1);
StrPcopy(Parquivo, Arquivo);
Len := GetFileVersionInfoSize(Parquivo, Handle);
Result := ´´;
if Len > 0 then
begin
Data:=StrAlloc(Len+1);
if GetFileVersionInfo(Parquivo,Handle,Len,Data) then
begin
VerQueryValue(Data, ´\´,Buffer,Tamanho);
F := PFFI(Buffer);
Result := Format(´¬d.¬d.¬d.¬d´,
[HiWord(F^.dwFileVersionMs),
LoWord(F^.dwFileVersionMs),
HiWord(F^.dwFileVersionLs),
Loword(F^.dwFileVersionLs)]
);
end;
StrDispose(Data);
end;
StrDispose(Parquivo);
end;
para chamar a função vc pode colocar no evento OnShow do formulário ou no onclick de um botão como o exemplo abaixo:
procedure TForm1.FormShow(Sender: TObject);
begin
Label1.Caption:= VersaoExe;
end;
Gostei + 0
08/10/2008
Felipemarinho
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)