2Pascal-新时代的Pascal

标题: 跨平台,多设备,多平台,代码写法,预定义写法,讨论 [打印本页]

作者: wang_80919    时间: 2015-6-15 15:46
标题: 跨平台,多设备,多平台,代码写法,预定义写法,讨论
跨平台,多设备,多平台,代码写法,预定义写法,$IFDEF $IF defined 写法 ,讨论
给 WIN 系统写代码,不区分 32 64
{$IFDEF MSWINDOWS}
  //代码
{$ENDIF}

给 苹果 安卓 等 Linux 的 POSIX 标准系统写代码。
{$IFDEF POSIX}
  //代码
{$ENDIF}



给安卓系统写代码,不区分 32 64
{$IFDEF ANDROID}
  //代码
{$ENDIF}

给苹果系统写代码,不区分 PC 和移动,也不区分 32 64
{$IFDEF MACOS}
  //代码
{$ENDIF}

给苹果 PC  MAC 系统写代码,不区分 32 64
{$IF Defined(MACOS) and Not Defined(IOS)}

给 苹果 iOS 系统写代码,不区分 32 64
{$IFDEF IOS}
  //代码
{$ENDIF}

给 WIN 系统写代码,区分 32 64
{$IFDEF WIN32}
  //代码
{$ENDIF}

{$IFDEF WIN64}
  //代码
{$ENDIF}


使用
{$IFDEF XXXX} 或者 {$IFNDEF XXXX}
一般配合如下代码。
{$ELSE}
{$ENDIF}

如果想要 ELSEIF
如下写法
{$IF defined(XXXX)}
{$ELSEIF defined(YYYY)}
{$ELSEIF defined(ZZZZ) 可以配合 OR  AND}
{$ENDIF}











作者: OneChen    时间: 2015-6-15 16:43
不错,很完整!

// 为了方便阅读,可以自订义一个 OSX 平台
{$IF Defined(MACOS) and Not Defined(IOS)}
  {$DEFINE MACOSONLY}
{$ENDIF}

// 使用示例
{$IFDEF MACOSONLY}
  //代码
{$ENDIF}

作者: wang_80919    时间: 2015-6-15 16:51
多谢 阿卍 来 捧场。
作者: l_wming    时间: 2015-7-9 10:36
Delphi默认的这些define常量在什么位置?那个文件?
作者: wang_80919    时间: 2015-7-9 10:57
l_wming 发表于 2015-7-9 10:36
Delphi默认的这些define常量在什么位置?那个文件?

只能在帮助中看到。代码中没有定义,只有使用。
作者: 红鱼儿    时间: 2015-7-27 19:02
如何区分是VCL项目还是FMX项目?
作者: OneChen    时间: 2015-7-27 23:06
[mw_shl_code=delphi,true]{$IF DECLARED(FireMonkeyVersion)}
  {$DEFINE HAS_FMX}
{$ELSE}
  {$DEFINE HAS_VCL}
{$IFEND}[/mw_shl_code]

参考:
http://stackoverflow.com/questio ... nits-for-fmx-or-vcl
作者: wang_80919    时间: 2015-7-28 13:07
多谢楼上的代码
FlyUtils.TBitmapHelper.pas
就可以 自动判断了。
{$IF DECLARED(FireMonkeyVersion)}
//FMX。
  {$DEFINE FMX}
{$ELSE}
//VCL
{$ENDIF}






欢迎光临 2Pascal-新时代的Pascal (http://2pascal.com/) Powered by Discuz! X3