如何在Delphi XE6中检查应用程序是否在iOS设备或模拟器上运行 [英] How to check if the app is running on iOS device or simulator in Delphi XE6
问题描述
基于此链接条件编译(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:
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屋!