在 Delphi FMX 中,可以通过以下方法获取当前应用程序的版本号:
使用 IFMXApplicationService
接口
delphi复制
uses FMX.Platform; procedure GetAppVersion; var AppVersion: string; begin AppVersion := TPlatformServices.Current.ApplicationServices.GetVersionString; ShowMessage('App Version: ' + AppVersion); end;
该方法适用于跨平台应用程序,GetVersionString
方法会返回应用程序的版本号字符串。
使用 TOSVersion
类(适用于 Windows 平台)
delphi复制
uses System.OSVersion; procedure GetAppVersion; var OSVersion: TOSVersion; begin OSVersion := TOSVersion.Create; try ShowMessage('App Version: ' + OSVersion.ToString); finally OSVersion.Free; end; end;
TOSVersion
类提供了关于操作系统版本的信息,但也可以用于获取应用程序的版本号。
使用 Windows API(适用于 Windows 平台)
delphi复制
uses Winapi.Windows; procedure GetAppVersion; var VerInfoSize, VerValueSize: DWORD; VerInfo: Pointer; VerValue: PVSFixedFileInfo; begin VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), 0); if VerInfoSize > 0 then begin GetMem(VerInfo, VerInfoSize); try if GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo) then begin VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize); ShowMessage('App Version: ' + IntToStr(VerValue^.dwFileVersionMS shr 16) + '.' + IntToStr(VerValue^.dwFileVersionMS and $FFFF) + '.' + IntToStr(VerValue^.dwFileVersionLS shr 16) + '.' + IntToStr(VerValue^.dwFileVersionLS and $FFFF)); end; finally FreeMem(VerInfo, VerInfoSize); end; end; end;
该方法通过调用 Windows API 获取应用程序的版本号。
使用 Android API(适用于 Android 平台)
delphi复制
uses Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes, FMX.Helpers.Android; procedure GetAppVersion; var PackageManager: JPackageManager; PackageInfo: JPackageInfo; begin PackageManager := TAndroidHelper.Context.getPackageManager; PackageInfo := PackageManager.getPackageInfo(TAndroidHelper.Activity.getPackageName, 0); ShowMessage('App Version: ' + JStringToString(PackageInfo.versionName)); end;
该方法通过调用 Android API 获取应用程序的版本号。
使用 iOS API(适用于 iOS 平台)
delphi复制
uses FMX.Platform.iOS, iOSapi.Foundation, Macapi.ObjectiveC; procedure GetAppVersion; var AppBundle: NSBundle; AppNameKey: Pointer; NSAppName: NSString; begin AppBundle := TNSBundle.Wrap(TNSBundle.OCClass.mainBundle); AppNameKey := (NSSTR('CFBundleVersion') as ILocalObject).GetObjectID; NSAppName := TNSString.Wrap(AppBundle.infoDictionary.objectForKey(AppNameKey)); ShowMessage('App Version: ' + UTF8ToString(NSAppName.UTF8String)); end;
该方法通过调用 iOS API 获取应用程序的版本号。
以上方法可以根据不同的平台选择合适的实现方式来获取应用程序的版本号。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END