如何在Delphi XE6中检查应用程序是否在iOS设备或模拟器上运行 [英] How to check if the app is running on iOS device or simulator in Delphi XE6

查看:104
本文介绍了如何在Delphi XE6中检查应用程序是否在iOS设备或模拟器上运行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

基于此链接条件编译(Delphi) CPUARM条件是:对于Simulator而言应为false,对于设备而言应为true,问题是它对我不起作用。
我正在使用 Delphi XE6,iOS Simulator 7.1

Based on this link Conditional compilation (Delphi) CPUARM conditional if should be false for Simulator and true for device, the problem is it's not working for me. I am using Delphi XE6, iOS Simulator 7.1

这是我的代码

    {$IFDEF CPUARM}
s := 'iOS device';
    {$ELSE}
s := 'iOS Simulator';
    {$ENDIF}

ps iOS模拟器正在VMWare虚拟机中运行。

p.s iOS Simulator is running in a VMWare virtual machine.

推荐答案

检查 CPUARM 是正确的解决方案。为模拟器编译的iOS二进制文件不是ARM,实际上是x86。只需确保使用 {$ IFDEF IOS} 包装您的iOS代码即可:

Checking for CPUARM is the correct solution. iOS binaries compiled for the simulator are not ARM, they are actually x86. Just make sure to wrap your iOS code with {$IFDEF IOS}:

{$IFDEF IOS}
  {$IFDEF CPUARM}
s := 'iOS device';
  {$ELSE}
s := 'iOS Simulator';
  {$ENDIF}
{$ENDIF}

Delphi使用ARM编译器

Delphi uses an ARM compiler for iOS devices, but uses an x86 compiler for the iOS simulator.

可用的编译器条件记录在Embarcadero的DocWiki中:

The available compiler conditionals are documented on Embarcadero's DocWiki:

条件编译(Delphi)|预定义的条件

CPUARM DCCIOSARM编译器(iOS设备)。

CPU386 CPUX86 DCCIOS32编译器(iOS模拟器)。

CPU386 and CPUX86 are defined by the DCCIOS32 compiler (iOS simulator).

看看实际存在的条件值XE6的DCCIOSARM.EXE和DCCIOS32.EXE可执行文件中的内容确认:

A look at the conditional values that are physically present in XE6's DCCIOSARM.EXE and DCCIOS32.EXE executable files confirms that:

DCCIOSARM.EXE:

DCCIOSARM.EXE:

**CPUARM**
DCC
NEXTGEN
AUTOREFCOUNT
WEAKINSTREF
WEAKINTFREF
WEAKREF
EXTERNALLINKER
NATIVECODE
POSIX
POSIX32
MACOS
MACOS32
**IOS**
VER270
CONSOLE
BCB
PIC
UNICODE
CONDITIONALEXPRESSIONS

DCCIOS32.EXE:

DCCIOS32.EXE:

**CPU386**
**CPUX86**
DCC
NEXTGEN
AUTOREFCOUNT
WEAKINSTREF
WEAKINTFREF
WEAKREF
NATIVECODE
POSIX
POSIX32
MACOS
MACOS32
**IOS**
ALIGN_STACK
UNDERSCOREIMPORTNAME
PC_MAPPED_EXCEPTIONS
ASSEMBLER
VER270
CONSOLE
BCB
PIC
UNICODE
CONDITIONALEXPRESSIONS

这篇关于如何在Delphi XE6中检查应用程序是否在iOS设备或模拟器上运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆