GARANTIR DESCONTO

Fórum Versão do meu executável #334988

20/12/2006

0

Gostaria de uma função que me retornasse a versão de um executável, feito por mim ou não.

eu tenho essa função:

function GetBuildInfo(prog: string): string;
var
  VerInfoSize: DWORD;
  VerInfo: Pointer;
  VerValueSize: DWORD;
  VerValue: PVSFixedFileInfo;
  Dummy: DWORD;
  V1, V2, V3, V4: Word;
begin
  try
    VerInfoSize := GetFileVersionInfoSize(PChar(prog), Dummy);
    GetMem(VerInfo, VerInfoSize);
    GetFileVersionInfo(PChar(prog), 0, VerInfoSize, VerInfo);
    VerQueryValue(VerInfo, ´\´, Pointer(VerValue), VerValueSize);
    with VerValue^ do
    begin
      V1 := dwFileVersionMS shr 16;
      V2 := dwFileVersionMS and $FFFF;
      V3 := dwFileVersionLS shr 16;
      V4 := dwFileVersionLS and $FFFF;
    end;
    FreeMem(VerInfo, VerInfoSize);
    result := Copy(IntToStr(100 + v1), 3, 2) + ´.´ +
      Copy(IntToStr(100 + v2), 3, 2) + ´.´ +
      Copy(IntToStr(100 + v3), 3, 2) + ´.´ +
      Copy(IntToStr(100 + v4), 3, 2);
  except
    result := ´Versão de Debug´;
  end;
end;


mas ela não funciona se a versão tiver dois digitos, por exemplo, se a versão for 47, ele traz apenas 4

Poderiam me ajudar?


Vitor Rubio

Vitor Rubio

Responder

Posts

20/12/2006

Weber

function GetVersionSystem:shortstring;
type
  PVerInfo = ^TVSFIXEDFILEINFO;
var
  Buf : Pointer;
  KeyPath, SelfPath : string;
  Len, Sz, L : cardinal;
  VerInfo : PVerInfo;
  VerInfoPresent:boolean;
begin
  Result := ´Desconhecida´;
  VerInfoPresent := false;
  SelfPath := ParamStr(0)+#0;
  Sz := GetFileVersionInfoSize(Addr(SelfPath[1]), L);
  GetMem(Buf, Sz);
  if (Sz > 0) and GetFileVersionInfo(Addr(SelfPath[1]), 0, Sz, Buf) then
      VerInfoPresent := true;

  if VerInfoPresent then
  begin
    KeyPath := ´\´+ 0;
    if VerQueryValue(Buf, Addr(KeyPath[1]), Pointer(VerInfo), Len) then
       Result := IntToStr(HIWORD(VerInfo.dwFileVersionMS))+´.´+
                 IntToStr(LOWORD(VerInfo.dwFileVersionMS))+´.´+
                 IntToStr(HIWORD(VerInfo.dwFileVersionLS))+´.´+
                 IntToStr(LOWORD(VerInfo.dwFileVersionLS));
  end;
end;



Responder

Gostei + 0

12/01/2007

Vitor Rubio

Obrigado Weber!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar