Delphi或者Lazarus(FPC),编译环境有一个自动增加版本信息的功能,应用程序在运行时显示往往是调用windows API,整合成标准函数格式如下。
function GetApplicationVersion: String; // Added 取得程序版本号 var FileName : String; InfoSize, Wnd: DWORD; VerBuf : Pointer; VerInfo : ^VS_FIXEDFILEINFO; begin Result := '0.0.0.0'; FileName := Application.ExeName; InfoSize := GetFileVersionInfoSize(PChar(FileName), Wnd); if InfoSize <> 0 then begin GetMem(VerBuf, InfoSize); try if GetFileVersionInfo(PChar(FileName), Wnd, InfoSize, VerBuf) then begin VerInfo := nil; VerQueryValue(VerBuf, '\', Pointer(VerInfo), Wnd); if VerInfo <> nil then Result := Format('V%d.%d.%d.%d', [VerInfo^.dwFileVersionMS shr 16, VerInfo^.dwFileVersionMS and $0000FFFF, VerInfo^.dwFileVersionLS shr 16, VerInfo^.dwFileVersionLS and $0000FFFF]); end; finally FreeMem(VerBuf, InfoSize); end; end; end;
其实mORMot里面已经了对应的实现。mORMot 1.8 在 SynCommons,跨平台!
调用方法简单直接:
TFileVersion.GetVersionInfo(Application.ExeName);