加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

取得 APP 自己的版本号 (狠跨 4 个平台)

发布时间:2020-12-15 04:35:41 所属栏目:大数据 来源:网络整理
导读:XE7 源码下载: XE6 源码下载: XE5 源码下载: //------------------------------------------------------------------------------// by [龟山]阿卍 QQ: // http://www.cnblogs.com/onechen///---------------------------------------------------------

XE7 源码下载:

XE6 源码下载:

XE5 源码下载:

//------------------------------------------------------------------------------ // by [龟山]阿卍 QQ: // http://www.cnblogs.com/onechen/ //------------------------------------------------------------------------------

<span style="color: #0000ff;">unit<span style="color: #000000;"> Main;

<span style="color: #0000ff;">interface

<span style="color: #0000ff;">uses<span style="color: #000000;">
System.SysUtils,System.Types,System.UITypes,System.Classes,System.Variants,<span style="color: #008000;">{<span style="color: #008000;">$IFDEF MSWINDOWS<span style="color: #008000;">}<span style="color: #000000;">
Winapi.Windows,<span style="color: #008000;">{<span style="color: #008000;">$ENDIF<span style="color: #008000;">}

<span style="color: #008000;">{<span style="color: #008000;">$IFDEF ANDROID<span style="color: #008000;">}<span style="color: #000000;">
Androidapi.JNI.GraphicsContentViewText,Androidapi.JNI.JavaTypes,FMX.Helpers.Android,
Androidapi.Helpers,// XE7 需要引入
<span style="color: #008000;"> {<span style="color: #008000;">$ENDIF<span style="color: #008000;">}


<span style="color: #008000;">{<span style="color: #008000;">$IFDEF MACOS<span style="color: #008000;">}<span style="color: #000000;">
FMX.Platform.Mac,Macapi.Foundation,<span style="color: #008000;">{<span style="color: #008000;">$ENDIF<span style="color: #008000;">}<span style="color: #000000;">

FMX.Types,FMX.Controls,FMX.Forms,FMX.Graphics,FMX.Dialogs,FMX.Layouts,FMX.Memo,FMX.StdCtrls;

<span style="color: #0000ff;">type<span style="color: #000000;">
TForm1 = <span style="color: #0000ff;">class<span style="color: #000000;">(TForm)
ToolBar1: TToolBar;
Label1: TLabel;
Memo1: TMemo;
<span style="color: #0000ff;">procedure<span style="color: #000000;"> FormCreate(Sender: TObject);
<span style="color: #0000ff;">private
<span style="color: #008000;">{<span style="color: #008000;"> Private declarations <span style="color: #008000;">}
<span style="color: #0000ff;">public
<span style="color: #008000;">{<span style="color: #008000;"> Public declarations <span style="color: #008000;">}
<span style="color: #0000ff;">end<span style="color: #000000;">;

<span style="color: #0000ff;">var<span style="color: #000000;">
Form1: TForm1;

<span style="color: #0000ff;">implementation

<span style="color: #008000;">{<span style="color: #008000;">$R *.fmx<span style="color: #008000;">}

<span style="color: #008000;">{<span style="color: #008000;">$IFDEF MSWINDOWS<span style="color: #008000;">}
<span style="color: #0000ff;">procedure GetBuildInfo(<span style="color: #0000ff;">var<span style="color: #000000;"> V1,V2,V3,V4: word);
<span style="color: #0000ff;">var<span style="color: #000000;">
VerInfoSize,VerValueSize,Dummy: DWORD;
VerInfo: Pointer;
VerValue: PVSFixedFileInfo;
<span style="color: #0000ff;">begin<span style="color: #000000;">
VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(<span style="color: #800080;">0<span style="color: #000000;">)),Dummy);
<span style="color: #0000ff;">if VerInfoSize > <span style="color: #800080;">0 <span style="color: #0000ff;">then
<span style="color: #0000ff;">begin<span style="color: #000000;">
GetMem(VerInfo,VerInfoSize);
<span style="color: #0000ff;">try
<span style="color: #0000ff;">if GetFileVersionInfo(PChar(ParamStr(<span style="color: #800080;">0)),<span style="color: #800080;">0,VerInfoSize,VerInfo) <span style="color: #0000ff;">then
<span style="color: #0000ff;">begin<span style="color: #000000;">
VerQueryValue(VerInfo,<span style="color: #800000;">'<span style="color: #800000;"><span style="color: #800000;">'<span style="color: #000000;">,Pointer(VerValue),VerValueSize);
<span style="color: #0000ff;">with VerValue^ <span style="color: #0000ff;">do
<span style="color: #0000ff;">begin<span style="color: #000000;">
V1 := dwFileVersionMS <span style="color: #0000ff;">shr <span style="color: #800080;">16<span style="color: #000000;">;
V2 := dwFileVersionMS <span style="color: #0000ff;">and<span style="color: #000000;"> $FFFF;
V3 := dwFileVersionLS <span style="color: #0000ff;">shr <span style="color: #800080;">16<span style="color: #000000;">;
V4 := dwFileVersionLS <span style="color: #0000ff;">and<span style="color: #000000;"> $FFFF;
<span style="color: #0000ff;">end<span style="color: #000000;">;
<span style="color: #0000ff;">end<span style="color: #000000;">;
<span style="color: #0000ff;">finally<span style="color: #000000;">
FreeMem(VerInfo,VerInfoSize);
<span style="color: #0000ff;">end<span style="color: #000000;">;
<span style="color: #0000ff;">end<span style="color: #000000;">;
<span style="color: #0000ff;">end<span style="color: #000000;">;

<span style="color: #0000ff;">function GetBuildInfoAsString: <span style="color: #0000ff;">string<span style="color: #000000;">;
<span style="color: #0000ff;">var<span style="color: #000000;">
V1,V4: word;
<span style="color: #0000ff;">begin<span style="color: #000000;">
GetBuildInfo(V1,V4);
Result := IntToStr(V1) + <span style="color: #800000;">'<span style="color: #800000;">.<span style="color: #800000;">' + IntToStr(V2) + <span style="color: #800000;">'<span style="color: #800000;">.<span style="color: #800000;">' +<span style="color: #000000;">
IntToStr(V3) + <span style="color: #800000;">'<span style="color: #800000;">.<span style="color: #800000;">' +<span style="color: #000000;"> IntToStr(V4);
<span style="color: #0000ff;">end<span style="color: #000000;">;
<span style="color: #008000;">{<span style="color: #008000;">$ENDIF<span style="color: #008000;">}

<span style="color: #0000ff;">procedure<span style="color: #000000;"> TForm1.FormCreate(Sender: TObject);
<span style="color: #008000;">{<span style="color: #008000;">$IFDEF MSWINDOWS<span style="color: #008000;">}
<span style="color: #0000ff;">begin<span style="color: #000000;">
Memo1.BeginUpdate;

 Memo1.Lines.Add(</span><span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;OS : Windows</span><span style="color: #800000;"&gt;'</span><span style="color: #000000;"&gt;);
 Memo1.Lines.Add(</span><span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;ver : </span><span style="color: #800000;"&gt;'</span> +<span style="color: #000000;"&gt; GetBuildInfoAsString);

 Memo1.EndUpdate;

<span style="color: #0000ff;">end<span style="color: #000000;">;
<span style="color: #008000;">{<span style="color: #008000;">$ENDIF<span style="color: #008000;">}

<span style="color: #008000;">{<span style="color: #008000;">$IFDEF ANDROID<span style="color: #008000;">}
<span style="color: #0000ff;">var<span style="color: #000000;"> PackageInfo: JPackageInfo;
PackageName: JString;
<span style="color: #0000ff;">begin<span style="color: #000000;">
Memo1.BeginUpdate;

 Memo1.Lines.Add(</span><span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;OS : Android</span><span style="color: #800000;"&gt;'</span><span style="color: #000000;"&gt;);
 Memo1.Lines.Add(</span><span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;applicationLabel : </span><span style="color: #800000;"&gt;'</span> +<span style="color: #000000;"&gt; GetApplicationTitle);

 PackageName :</span>=<span style="color: #000000;"&gt; SharedActivityContext.getPackageName;
 Memo1.Lines.Add(</span><span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;packageName : </span><span style="color: #800000;"&gt;'</span> +<span style="color: #000000;"&gt; JStringToString(PackageName));

 PackageInfo :</span>= SharedActivityContext.getPackageManager.getPackageInfo(PackageName,<span style="color: #800080;"&gt;0</span><span style="color: #000000;"&gt;);
 Memo1.Lines.Add(</span><span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;versionName : </span><span style="color: #800000;"&gt;'</span> +<span style="color: #000000;"&gt; JStringToString(PackageInfo.versionName));

 Memo1.EndUpdate;

<span style="color: #0000ff;">end<span style="color: #000000;">;
<span style="color: #008000;">{<span style="color: #008000;">$ENDIF<span style="color: #008000;">}

<span style="color: #008000;">{<span style="color: #008000;">$IF Defined(IOS) or Defined(MACOS)<span style="color: #008000;">}
<span style="color: #0000ff;">var<span style="color: #000000;"> AppNameKey: Pointer;
AppBundle: NSBundle;
NSAppName: NSString;
<span style="color: #0000ff;">begin<span style="color: #000000;">
Memo1.BeginUpdate;

 Memo1.Lines.Add(</span><span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;OS : iOS</span><span style="color: #800000;"&gt;'</span><span style="color: #000000;"&gt;);
 AppBundle :</span>=<span style="color: #000000;"&gt; TNSBundle.Wrap(TNSBundle.OCClass.mainBundle);

 AppNameKey :</span>= (NSSTR(<span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;CFBundleName</span><span style="color: #800000;"&gt;'</span>) <span style="color: #0000ff;"&gt;as</span><span style="color: #000000;"&gt; ILocalObject).GetObjectID;
 NSAppName :</span>=<span style="color: #000000;"&gt; TNSString.Wrap(AppBundle.infoDictionary.objectForKey(AppNameKey));
 Memo1.Lines.Add(</span><span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;CFBundleName : </span><span style="color: #800000;"&gt;'</span> +<span style="color: #000000;"&gt; UTF8ToString(NSAppName.UTF8String));

 AppNameKey :</span>= (NSSTR(<span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;CFBundleDisplayName</span><span style="color: #800000;"&gt;'</span>) <span style="color: #0000ff;"&gt;as</span><span style="color: #000000;"&gt; ILocalObject).GetObjectID;
 NSAppName :</span>=<span style="color: #000000;"&gt; TNSString.Wrap(AppBundle.infoDictionary.objectForKey(AppNameKey));
 Memo1.Lines.Add(</span><span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;CFBundleDisplayName : </span><span style="color: #800000;"&gt;'</span> +<span style="color: #000000;"&gt; UTF8ToString(NSAppName.UTF8String));

 AppNameKey :</span>= (NSSTR(<span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;CFBundleIdentifier</span><span style="color: #800000;"&gt;'</span>) <span style="color: #0000ff;"&gt;as</span><span style="color: #000000;"&gt; ILocalObject).GetObjectID;
 NSAppName :</span>=<span style="color: #000000;"&gt; TNSString.Wrap(AppBundle.infoDictionary.objectForKey(AppNameKey));
 Memo1.Lines.Add(</span><span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;CFBundleIdentifier : </span><span style="color: #800000;"&gt;'</span> +<span style="color: #000000;"&gt; UTF8ToString(NSAppName.UTF8String));

 AppNameKey :</span>= (NSSTR(<span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;CFBundleVersion</span><span style="color: #800000;"&gt;'</span>) <span style="color: #0000ff;"&gt;as</span><span style="color: #000000;"&gt; ILocalObject).GetObjectID;
 NSAppName :</span>=<span style="color: #000000;"&gt; TNSString.Wrap(AppBundle.infoDictionary.objectForKey(AppNameKey));
 Memo1.Lines.Add(</span><span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;CFBundleVersion : </span><span style="color: #800000;"&gt;'</span> +<span style="color: #000000;"&gt; UTF8ToString(NSAppName.UTF8String));

 Memo1.EndUpdate;

<span style="color: #0000ff;">end<span style="color: #000000;">;
<span style="color: #008000;">{<span style="color: #008000;">$ENDIF<span style="color: #008000;">}

<span style="color: #0000ff;">end.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读