繁体   English   中英

获取Delphi XE2和更高版本的文件版本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM