如何检查Delphi Android 10.3.3的64位或32位运行模式?

如何检查Delphi Android 10.3.3的64位或32位运行模式?,android,delphi,bit,Android,Delphi,Bit,Delphi Firemonkey Android 10.3.3是否有关于检查您是否在Android设备上以32位或64位运行的文档 Dalija Prasnikar的回答似乎最有效: var p: pointer; begin if SizeOf(p) = 4 then showmessage('32 bit') else if SizeOf(p) = 8 then showmessage('64 bit'); 我似乎无法让其他答案正常工作 {$IFDEF CPU32

Delphi Firemonkey Android 10.3.3是否有关于检查您是否在Android设备上以32位或64位运行的文档

Dalija Prasnikar的回答似乎最有效:

var p: pointer;
begin
  if SizeOf(p) = 4 then
    showmessage('32 bit')
  else if SizeOf(p) = 8 then
    showmessage('64 bit');
我似乎无法让其他答案正常工作

{$IFDEF CPU32BITS }
  // 32-bit
{$ELSE }
  // 64-bit
{$ENDIF }
除非你的意思是如果AndoidOS是32位还是64位(你可以在64位Android上运行32位程序)

那么

(假设你已经知道你在Android上运行)


最快的方法是检查SizeOf(指针)4表示32位,8表示64位。此外,如果设备有32位操作系统,则无法运行64位。我的测试设备正在运行Android PIE。另请参阅您的代码将仅确定程序是32位还是64位,而不是操作系统是32位还是64位。因此,如果您在64位操作系统上运行32位程序,您会将其检测为32位(这可能是您想要的)。这相当于我的CPU32BITS编译器指令。当我以32位平台调试为目标时,它通过你的{$ELSE}子句表示它正在运行64位,如果我以64位平台调试为目标,它也将{$ELSE}子句用于64位。如果我将64位平台作为android的目标,它的运行速度也会非常慢。有什么想法吗?@ElDiablo:我记错了定义的符号。请重试…{$IFDEF CPU32BITS}tar体系结构。ARARAM64未识别,但旧的{$IFDEF USE32}允许对其进行标识。@ElDiablo:Ahh-tar体系结构是类本地类型标识符,因此需要限定。固定的。再试一次。。。
USES System.SysUtils;

.
.
.

{$IFDEF CPU32BITS }
  IF TOSVersion.Architecture=TOSVersion.TArchitecture.arARM64 THEN
    // 64-bit
  ELSE
    // 32-bit
{$ELSE }
  // 64-bit
{$ENDIF }