Versão de uma dll ...
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 ...
só que ele ta me retornando que a versão é 2.6.0.0 ...
Alguem ai sabe o porque?
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
Curtidas 0
Respostas
Massuda
02/09/2005
Testei seu código e me parece que tem um problema na formatação da versão. Ao invés de...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.
...
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); ...
GOSTEI 0
Daniellimafv
02/09/2005
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;
GOSTEI 0
Massuda
02/09/2005
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?
GOSTEI 0