我正在使用下面的函数从当前的 EXE 文件中获取版本信息。
问题是,在应用 Delphi 11 的 November Patch 后,该功能开始使应用程序崩溃。
我的代码在下面列出。崩溃的行是这样的:
VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
这是错误,在此之后应用程序关闭。在补丁之前,同样的功能没有问题。也许是一个错误的更新?
function TForm1.version : string;
var
VerInfoSize: DWord;
VerInfo: Pointer;
VerValueSize: DWord;
VerValue: PVSFixedFileInfo;
Dummy: DWord;
sfilename: string;
begin
sfilename := paramstr(0);
VerInfoSize := GetFileVersionInfoSize(pchar(sfilename), Dummy);
GetMem(VerInfo, VerInfoSize);
GetFileVersionInfo(pchar(sfilename), 0, VerInfoSize, VerInfo);
VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
with VerValue^ do
begin
Result := inttostr(dwFileVersionMS shr 16);
Result := Result + '.' + inttostr(dwFileVersionMS and $FFFF);
Result := Result + '.' + inttostr(dwFileVersionLS shr 16);
Result := Result + '.' + inttostr(dwFileVersionLS and $FFFF);
end;
FreeMem(VerInfo, VerInfoSize);
end;