簡體   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