Fórum Versão de uma dll ... #294286

02/09/2005

0

Galera .. é u seguinte .. eu tenho uam DLL cuja versão é 2.6.13.69 ...

To usando a função abaixo pra pegar essa versão dentro do meu aplicativo ...

Function TForm3.GetBuildInfo(Arq: String):string;
var VerInfoSize: DWORD;
    VerInfo: Pointer;
    VerValueSize: DWORD;
    VerValue: PVSFixedFileInfo;
    Dummy: DWORD;
    V1, V2, V3, V4: Word;
    Prog : string;
begin
    Try
    Prog := CaminhoParaTelaDLLs+Arq;
    VerInfoSize := GetFileVersionInfoSize(PChar(prog), Dummy);
    GetMem(VerInfo, VerInfoSize);
    GetFileVersionInfo(PChar(prog), 0, VerInfoSize, VerInfo);
    VerQueryValue(VerInfo, ´\´, Pointer(VerValue), VerValueSize);
    If VerValue <> Nil Then
    Begin
        With VerValue^ do
        begin
        V1 := dwFileVersionMS shr 16;
        V2 := dwFileVersionMS and $FFFF;
        V3 := dwFileVersionLS shr 16;
        V4 := dwFileVersionLS and $FFFF;
        end;
    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
        On EAccessViolation Do
        Begin
            Result := ´-´;
        End;

    End;
end;


só que ele ta me retornando que a versão é 2.6.0.0 ...

Alguem ai sabe o porque?


Daniellimafv

Daniellimafv

Responder

Posts

02/09/2005

Massuda

Testei seu código e me parece que tem um problema na formatação da versão. Ao invés de...
... 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); ...
...experimente fazer...
......
  Result := IntToStr(v1) + ´.´ + IntToStr(v2) + ´.´ +
    IntToStr(v3) + ´.´ + IntToStr(v4);
...
Um detalhe... sua formatação estava assumindo que os valores v1...v4 estão entre 0 e 99, mas no Windows, por exemplo, tem arquivos com versão 6.0.2900.2180.


Responder

Gostei + 0

03/09/2005

Daniellimafv

Mais é ai que ta u problema ... os valores já entram errados na variavel ...

        V1 := dwFileVersionMS shr 16; 
        V2 := dwFileVersionMS and $FFFF; 
        V3 := dwFileVersionLS shr 16; 
        V4 := dwFileVersionLS and $FFFF; 



Responder

Gostei + 0

03/09/2005

Massuda

Mais é ai que ta u problema ... os valores já entram errados na variavel ...
Aparentemente não tem problema no seu código (tirando o que eu citei no meu post anterior).

Usando o Windows Explorer, quando você pede as propriedades da DLL que você está testando, qual a versão que aparece na aba Versão?


Responder

Gostei + 0

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

Aceitar