Using Delphi 5 on WinXP the following code runs fine:
function GetBuildInfo : string;
var
VerInfoSize,
VerValueSize,
Dummy : DWORD;
VerInfo : Pointer;
VerValue : PVSFixedFileInfo;
V1, V2, V3, V4 : Word;
begin
VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)),Dummy);
GetMem(VerInfo, VerInfoSize);
GetFileVersionInfo(PChar(ParamStr(0)), 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 := IntToStr(V1)+ cDot +
IntToStr(V2)+ cDot +
IntToStr(V3)+ cDot +
IntToStr(V4);
end;
However, when upgrading to Delphi 7 the code crashes at the VerQueryValue
with an EAccessViolation in the module version.dll. What is causing this
issue and what can I do to correct.
Thanks...Gerry