[英]Get File Version for Delphi XE2 and later
我正在从Delphi 2010中将程序更新为Delphi XE7。由于我认为需要适应unicode并使用GetFileVersionInfoW而不是GetFileVersionInfoSize,以下所示的代码已停止工作。
是否有人开发了我正在使用的功能的最新版本,如下所示? 到目前为止,我在网络上找不到任何示例,而且我担心低级Windows编程超出了我。
谢谢你的帮助!
不再存在的旧代码可在Delphi XE2和更高版本上使用:仅返回1.0.0.0
procedure GetBuildInfo(var V1, V2, V3, V4: Word);
{From Steve Schafer }
var
VerInfoSize: DWORD;
VerInfo: pointer;
VerValueSize: DWORD;
VerValue: PVSFixedFileInfo;
Dummy: DWORD;
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);
end;
当所有版本的Delphi编译时,您的代码都可以很好地工作。 因此,关于代码为何报告1.0.0.0
版本的唯一逻辑结论是该版本为1.0.0.0
。
换句话说,通过查看此代码将找不到您的问题。 通过找出为什么在编译时不设法设置想要的版本信息,可以找到您的问题。
还可能需要指出的是,您的代码没有尝试检查返回值是否有错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.