文档章节

Delphi 的编译指令(2): 条件语句的更多用法

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 337
阅读 9
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>


1. $IFDEF 等同于 $IF DEFINED(...) :
它们的结束分别是: $ENDIF、$IFEND; 例子中的 VER200 是 Delphi 2009 的标识.
begin
  {$IFDEF VER200}
    ShowMessage('这是 Delphi 2009');
  {$ENDIF}

  {$IF DEFINED(VER200)}
    ShowMessage('这是 Delphi 2009');
  {$IFEND}
end;

 
 
 
 
 

 

 

  

2. $IFNDEF 等同于 $IF NOT DEFINED(...) :
它们的结束分别是: $ENDIF、$IFEND; 例子中的 VER150 是 Delphi 7 的标识.
begin
  {$IFNDEF VER150}
    ShowMessage('这不是 Delphi 7');
  {$ENDIF}

  {$IF NOT DEFINED(VER150)}
    ShowMessage('这不是 Delphi 7');
  {$IFEND}
end;

 
 
 
 
 

 

 

  

3. 可以使用 or 和 and:
begin
  {$DEFINE AAA}
  {$DEFINE BBB}

  {$IF DEFINED(AAA) OR DEFINED(BBB)}
    ShowMessage('条件标识符 AAA 和 BBB 其中一个定义了');
  {$IFEND}

  {$IF DEFINED(AAA) AND DEFINED(BBB)}
    ShowMessage('条件标识符 AAA 和 BBB 都定义了');
  {$IFEND}
end;

 
 
 
 
 

 

 

  

4. 可以使用 System 单元里的常量:
我测试了 System 单元里的很多常量都没问题.
begin
  ShowMessage(FloatToStr(CompilerVersion)); {在 Delphi 2009 中, CompilerVersion = 20.0}

  {$IF CompilerVersion >= 17.0}
    ShowMessage('这是 Delphi 2005 或以上的版本');
  {$IFEND}
end;

 
 
 
 
 

 

 

  

5. 使用 $IFOPT 判断编译开关:
Delphi 挺好玩, 26个字母分别安排成不同的开关指令(用 Ctrl+o+o 查看, 当然开关指令不止这些);
$IFOPT 可以判断这些指令是否打开.
这个指令不是很常用, 我看了一下 2009 的 VCL 源码, 总共才用了 6 次.
begin
  {$IFOPT B+}
    ShowMessage('指令 B 已打开');
  {$ELSE}
    ShowMessage('指令 B 已关闭');
  {$ENDIF}

  {$B+}
  {$IFOPT B+}
    ShowMessage('Ok!');
  {$ENDIF}
end;

 
 
 
 
 

 

 

  
涂孟超
粉丝 13
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
加载中
请先登录后再评论。
Flappy Bird(安卓版)逆向分析(一)

更改每过一关的增长分数 反编译的步骤就不介绍了,我们直接来看反编译得到的文件夹 方法1:在smali目录下,我们看到org/andengine/,可以知晓游戏是由andengine引擎开发的。打开/res/raw/at...

enimey
2014/03/04
6K
18
Swift百万线程攻破单例(Singleton)模式

一、不安全的单例实现 在上一篇文章我们给出了单例的设计模式,直接给出了线程安全的实现方法。单例的实现有多种方法,如下面: class SwiftSingleton { } 这段代码的实现,在shared中进行条...

一叶博客
2014/06/20
3.4K
16
极速博客引擎--Gor

gor 是使用 golang 实现的类Ruhoh静态博客引擎(Ruhoh like),基本兼容ruhoh 1.x规范. 相当于与ruhoh的官方实现(ruby实现), 有以下优点: 速度完胜 -- 编译wendal.net近200篇博客,仅需要1秒 安装...

wendal
2013/01/20
3.8K
0
XLSX读写库--EPPlus

EPPlus 是使用Open Office XML格式(xlsx)读写Excel 2007 / 2010文件的.net开发库。 EPPlus 支持: 单元格范围 单元格样式(Border, Color, Fill, Font, Number, Alignments) Charts 图片 形状...

匿名
2013/02/01
1W
2
tiny php template--TPT

关于TPT TPT是php实现的用于模板解析小工具,全部实现仅仅60行代码。 配置 DIRCOMPILED和DIRTEMPLATE,分别表示模版编译目录和模版文件目录: define('DIRCOMPILED','/compileddiy');define(......

红猪-侠
2013/03/03
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

数据库高频面试点,事务/乐观锁/悲观锁/CAS/MySQL存储引擎

事务的ACID特性是什么? 原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用; 一致性: 执行事务前后,数据保持一致,多个事务对同一个数据读...

osc_45536bvu
51分钟前
16
0
大数据BI软件助力企业数字化转型

当下,「新基建」势头正盛,随着“新基建”成为热议话题,数字化也随之成为企业面临的新机遇和新挑战。新基建的核心就是数据,数据是数字经济和企业数字化转型的生产要素和发展动力。 再看看...

osc_0boqdoe2
52分钟前
0
0
凯旋创投来志刚:基因治疗新时代,大戏刚刚开始

  2017 年,全球第一个基因治疗方法 CAR-T 细胞药物 Kymriah 获得 FDA 上市批准,从此掀起了基因治疗的热潮。随着相关技术和政策的不断成熟,基因治疗市场也随之扩大。根据德勤发布的《引领...

osc_k3vwonkw
53分钟前
10
0
LightningChart.NET使用两个BarSeries创建简单的2D图表

本教程介绍了如何使用两个BarSeries创建简单的2D图表。 BarSeries将数据值表示为矩形条,并且可以用于以非常清晰的方式可视化数据之间的差异和方差。 在本教程中,BarSeries用于表示两年期间...

roffey
54分钟前
0
0
Mybatis trim 标签的 2 个妙用!

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼...

osc_x03qsedc
55分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部