[Delphi]编译条件
当软件在多个DELPHI版本下编译时,需要处理各版本的不同情况,使用编译条件技术实现。
万一博客,编译指令基础使用介绍:http://www.cnblogs.com/del/category/168694.html
Delphi的版本区分:
RTL的版本: Run-Time Library 运行时库, 包括 System, SysUtils, Math 三个单元. 提供函数与语言, 编译器,
操作系统及进程有关。 在System单元有常量定义:
const
RTLVersion = 22.00; //XE
编译器的版本:查看方法,在命令行中,切换到对应delphi安装目录中的bin目录,执行dcc32.exe, 如XE:

可以看到 Embarcadero Delphi for Win32 compiler version 22.0 。
System单元:{$EXTERNALSYM CompilerVersion}
inc文件:
.inc 文件就是include file的意思。在单元文件中可以用指令{$I 'xxx.inc'} 进行导入。.inc文件中可以写符合delphi语法的
代码。另外: 引入 C 语言的 obj 文件是用 {$L 路径} 指令完成的。
常用编译指令说明:
| 指令 | 可选值 | 范围 | 注释 |
| {$MESSAGE HINT|WARN|ERROR|FATAL 'msg'} | Local | ||
| {$LEGACYIFEND ON} | IFEND就统一成ENDIF了,编译器会有警告,打开就可以和早期的版本兼容 | ||
| {$HPPEMIT 'string'} | 添加的字符在C++编译时使用 | ||
| {$M +} /{$M-} | Local | 与{$TYPEINFO ON} 作用是一样,指定为类生成与RTTI(Runtime Type Information)相关信息 | |
| {$EXTERNALSYM [ 'typeNameInHpp' [ 'typeNameInHppUnion' ]]} | 数据类型映射,产生C++头文件,一般跟$OBJTYPENAME一起。 | ||
| {$B-} | + | 完整的布尔表达式计算(禁止快捷计算) | |
| {$R-} | + | 范围检查(数组,字符串等) | |
| {$T-} | Typed @ operator | ||
| {$X+} | Extended syntax | ||
| {$P+} | Open string params | ||
| {$J+} | Writeable structured consts | ||
| {$H+} | Use long strings by default | ||
| {$Q-} | Overflow checking |
预定义条件标识符:http://docwiki.embarcadero.com/RADStudio/Seattle/en/Conditional_compilation_(Delphi)
编译器版本:http://docwiki.embarcadero.com/RADStudio/Seattle/en/Compiler_Versions
编译符:http://docwiki.embarcadero.com/RADStudio/Seattle/en/Delphi_Compiler_Directives_(List)_Index
[Delphi]编译条件的更多相关文章
- [ActionScript&Flex] FlashBuilder编译条件之如何屏蔽调试代码
下面讲一下在FlashBuilder中如何添加编译器参数使我们在发布的时候不编译调试代码: 首先设置编译参数 编译参数设置好后,代码我们可以这样写: public class ConditionalC ...
- delphi 编译的时候 把Warning去除的方法
delphi 编译的时候 把Warning去除的方法 在 添加 {$WARNINGS OFF}
- 教程-Delphi编译就报毒
这几天都在忙专周实验,今天用到delphi,一到编译时nod32就报毒,编译空文件也报毒,上网查了资料才明白,是编译文件被感染了,生成软件就会报毒.把自己找到的资料分享如下: 重新编译时,生成的e ...
- 工程文件csproj使用编译条件指定属性
csproj工程文件中有很多xml格式的属性,比如PropertyGroup.ItemGroup,某些属性操作默认是全部的或者是当前编译条件的而已,当我们想指定某些属性只在某个编译条件下发生时就可以通 ...
- 把EXE可执行文件等作为资源包含在Delphi编译文件中
摘自我自己过去写的一段心得. 1.编辑资源文件 *.RCWave: 资源文件是声音文件:RCDATA: 二进制数据AVI: AVI动画:ICON: 图标文件:BITMAP: 位图文件:CURSOR: ...
- Delphi编译/链接过程
下面展示了Delphi是怎样编译源文件,并且把它们链接起来,最终形成可执行文件. 当Delphi编译项目(Project)时,将编译项目源文件.窗体单元和其他相关单元,在这个过程中将会发生好几件事情: ...
- Delphi编译指令说明
Delphi快速高效的编译器主要来自Object PASCAL的严谨,使用Delphi随时都在与编译器交流,大部分情况下不需要干涉编译器的运行,但是有时也需要对编译器进行必要的设置. ******** ...
- Delphi编译的程序如何获取管理员权限
1.制作manifest文件 <?xml version="1.0" encoding="UTF-8" standalone="yes" ...
- Delphi 编译错误信息表
; not allowed before ELSE ElSE前不允许有“;” <clause> clause not allowed in OLE automation section 在 ...
随机推荐
- Linux操作系统-基本命令(一)
熟悉Linux命令基础 Linux系统的终端窗口 字符终端为用户提供了一个标准的命令行接口,在字符终端窗口中,会显示一个Shell提示符,通常为$. 用户可以在提示符后输入带有选项和参数的字符命令,并 ...
- findbug、p3c、checkstyle、sonar安装使用
idea插件安装方式: Preferences—>Plugins—>查找插件—>Install Preferences—>Plugins—>Install plug fr ...
- 一线工程师带你深入学习和使用Kubernetes
http://page.factj.com/tor/xoxaHR0cDovL2RvY2tvbmUuaW8vYXJ0aWNsZS8yMzM0 Kubernetes是Google开源的容器集群管理系统,它 ...
- eclipse中debug改变变量的值
step1:debug断点到变量的下一行,在debug试图的右上角variables中看到该变量的值: step2:鼠标右键点击str出现下图,选择Change Value... step3:点击Ch ...
- 迷你MVVM框架 avalonjs 学习教程1、引入avalon
avalon是国内最强大的MVVM框架,没有之一,虽然淘宝KISSY团队也搞了两个MVVM框架,但都无疾而终.其他的MVVM框架都没几个.也只有外国人与像我这样闲的架构师才有时间钻研这东西.我很早之前 ...
- MyBatis 注解式开发
- Redis 位操作
[Redis 位操作] 1.GETBIT key offset 对 key 所储存的字符串值,获取指定偏移量上的位(bit). 当 offset 比字符串值的长度大,或者 key 不存在时,返回 0 ...
- LevelDB Compaction操作
[LevelDB Compaction操作] 对于LevelDb来说,写入记录操作很简单,删除记录仅仅写入一个删除标记就算完事,但是读取记录比较复杂,需要在内存以及各个层级文件中依照新鲜程度依次查找, ...
- FP扣损耗逻辑代码
芯片172没有扣减损耗, 取数:SAP_STPO的AUSCH IN_BOM_DETAILS:耗损比例COMPONENT_YIELD_UOM 存储过程FP_MO2SAP:supplydmdpeg ...
- MyEclipse10.0 配置 Tomcat1.7
1 首先 从网上下载Tomcat1.7,然后放到本机目录. 2 然后在MyEclipse10.0菜单Preferences 指向Tomcat的路径,我本机路径是 D:\Program Files (x ...