Delphi android windows IOS通用获取程序版本


本文整理自网络,侵删。

 
{$IFDEF MSWINDOWS}

uses Winapi.Windows, ShlObj, FMX.PlatForm.Win, ShellAPI;
{$ENDIF}
{$IFDEF ANDROID}

uses Androidapi.JNI.JavaTypes, Androidapi.Helpers,
  Androidapi.JNI.GraphicsContentViewText;
{$ENDIF}

//上面引用仅供参考

{$IFDEF ANDROID}

function GetAppVersion: String;
var
  PackageManager: JPackageManager;
  PackageInfo: JPackageInfo;
begin
  PackageManager := TAndroidHelper.Context.getPackageManager;
  PackageInfo := PackageManager.getPackageInfo
    (TAndroidHelper.Activity.getPackageName, 0);
  Result := JStringToString(PackageInfo.versionName);
end;
{$ENDIF}
// {$IFDEF MACOS}
// begin
// Result := '';
// end;
// {$ENDIF}

{$IFDEF IOS}

function GetAppVersion: String;
begin
  Result := string(TNSString.Wrap(CFBundleGetValueForInfoDictionaryKey
    (CFBundleGetMainBundle, kCFBundleVersionKey)).UTF8String);
end;
{$ENDIF}
{$IFDEF MSWINDOWS}

function GetAppVersion: String;
const
  Fmt = '%d.%d.%d.%d';

var
  sFileName: String;
  iBufferSize: DWORD;
  iDummy: DWORD;
  pBuffer: Pointer;
  pFileInfo: Pointer;
  iVer: array [1 .. 4] of Word;
begin
  // set default value
  Result := '';

  // prepare buffer for path and terminating #0
  SetLength(sFileName, MAX_PATH + 1);
  SetLength(sFileName, GetModuleFileName(hInstance, PChar(sFileName),
    MAX_PATH + 1));

  // get size of version info (0 if no version info exists)
  iBufferSize := GetFileVersionInfoSize(PChar(sFileName), iDummy);
  if (iBufferSize > 0) then
  begin
    GetMem(pBuffer, iBufferSize);
    try
      // get fixed file info (language independent)
      GetFileVersionInfo(PChar(sFileName), 0, iBufferSize, pBuffer);
      VerQueryValue(pBuffer, '\', pFileInfo, iDummy);
      // read version blocks
      iVer[1] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
      iVer[2] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
      iVer[3] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
      iVer[4] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
    finally
      FreeMem(pBuffer);
    end;
    // format result string
    Result := Format(Fmt, [iVer[1], iVer[2], iVer[3], iVer[4]]);
  end;
end;
{$ENDIF}

相关阅读 >>

Delphi 流分割与合并文件的函数

Delphi保存网页中的图片

Delphi enablecontrols,disablecontrols函数

Delphi android路径 tpath 文件路径,文件管理

Delphi xe7 up1 调用android振动功能

Delphi 比较两个位图是否相同

Delphi隐藏指定程序的托盘图标

Delphi 取系统临时路径

Delphi 2009 泛型容器单元(generics.collections)[4]: tdictionary<t>

Delphi unicode转中文编码

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...