Como Fazer aparecer a versão do meu programa

Delphi

07/10/2008

bom dia rapaziada, gostaria de saber o seguinte :

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

Felipemarinho

Curtidas 0

Respostas

Prgdelphi

Prgdelphi

07/10/2008

Felipemarinho,

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
Brunovendas

Brunovendas

07/10/2008

Mais uma (você decide):

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
Felipemarinho

Felipemarinho

07/10/2008

valeu gente deu certo.


GOSTEI 0
POSTAR