从 Delphi 11 应用十一月补丁后崩溃的 EXE 文件中获取版本信息
Get version info from EXE file crashing on Delphi 11 after applying November Patch
我正在使用下面的函数从当前 EXE 文件中获取版本信息。
问题是,在应用 Delphi 11 月补丁后,该函数开始使应用程序崩溃。
下面列出了我的代码。崩溃的行是这样的:
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;
其实问题是EXE文件没有任何版本信息,产生了异常,我没有处理。
下面答案的代码有效:
GetFileVersionInfoSize And GetFileVersionInfo return nothing
我正在使用下面的函数从当前 EXE 文件中获取版本信息。
问题是,在应用 Delphi 11 月补丁后,该函数开始使应用程序崩溃。
下面列出了我的代码。崩溃的行是这样的:
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;
其实问题是EXE文件没有任何版本信息,产生了异常,我没有处理。
下面答案的代码有效:
GetFileVersionInfoSize And GetFileVersionInfo return nothing