madTools: GetFileVersion
Posted: Mon Jan 18, 2010 1:48 pm
Hi
GetFileVersion returns the result only if there are only numbers fileversion
But some program\library does not contain VersionInfo, but contain String VersionInfo (oracleclient.dll)
Maybe add function GetFileVersionInfoStr
and Call this function in madExcept.pas and madListModules.pas
code
replaced by
GetFileVersion returns the result only if there are only numbers fileversion
But some program\library does not contain VersionInfo, but contain String VersionInfo (oracleclient.dll)
Maybe add function GetFileVersionInfoStr
Code: Select all
function GetFileVersionStr(const AFileName: String) : String;
var
P: Pointer;
Value: Pointer;
Len: DWORD;
FHandle: DWORD;
FBuffer: String;
VerInt64: Int64;
begin
VerInt64 := GetFileVersion(AFileName);
if VerInt64 > 0 then
Result := FileVersionToStr(VerInt64)
else begin
P := nil;
Len := GetFileVersionInfoSize(PAnsiChar(AFileName), FHandle);
if Len > 0 then
SetLength(FBuffer, Len);
if GetFileVersionInfo(PAnsiChar(AFileName), FHandle, Len, Pointer(FBuffer)) and
VerQueryValue(Pointer(FBuffer), '\VarFileInfo\Translation', P, Len) and (P <> nil) then begin
VerInt64 := MakeLong(HiWord(Longint(P^)), LoWord(Longint(P^)));
if VerQueryValue(Pointer(FBuffer), PAnsiChar('\StringFileInfo\' +
CopyR(IntToHexEx(VerInt64, 8), 8) + '\FileVersion'), Value, Len) then
Result := PAnsiChar(Value);
end;
end;
end;
code
Code: Select all
i64 := GetFileVersion(filePath);
if i64 <> 0 then
version := string(FileVersionToStr(i64));
Code: Select all
version := GetFileVersionStr(filePath);