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