如何利用预编译指令来判断Delphi 的版本转载
条件符号 含义
VERxx 编译器版本,XX表示版本,例如:Delphi 1.0 的编译器版本为80、Delphi 5.0 的编译器版本为130
WIN32 是否WIN32的运行环境(Windows 95.98/NT/2000)
CPU386 是否Intel386以上的处理器
CONSOLE 是否控制台程序
用 {$IFDEF VER1XX} 来判断
// Delphi 4
{$IFDEF VER120}
{$DEFINE VCL4ORABOVE}
{$DEFINE VCL4O}
{$DEFINE DELPHI}
{$DEFINE DELPHI4}
{$DEFINE OVERLOADING}
{$DEFINE OPTIONALPARAMS}
{$ENDIF}
// C++ Builder 4
{$IFDEF VER125}
{$DEFINE VCL4ORABOVE}
{$DEFINE VCL4O}
{$DEFINE CBUILDER}
{$DEFINE CBUILDER4}
{$DEFINE OVERLOADING}
{$DEFINE OPTIONALPARAMS}
{$ENDIF}
// Delphi 5 & CBuilder 5
{$IFDEF VER130}
{$DEFINE VCL4ORABOVE}
{$DEFINE VCL5ORABOVE}
{$DEFINE VCL5O}
{$IFDEF BCB}
{$DEFINE CBUILDER}
{$DEFINE CBUILDER5}
{$ELSE}
{$DEFINE DELPHI}
{$DEFINE DELPHI5}
{$ENDIF}
{$DEFINE OVERLOADING}
{$DEFINE OPTIONALPARAMS}
{$DEFINE SAMETEXT}
{$ENDIF}
//Delphi 6
{$IFDEF VER140}
{$DEFINE VCL4ORABOVE}
{$DEFINE VCL5ORABOVE}
{$IFDEF BCB}
{$DEFINE CBUILDER}
{$DEFINE CBUILDER6}
{$ELSE}
{$DEFINE DELPHI}
{$DEFINE DELPHI6}
{$ENDIF}
{$DEFINE OVERLOADING}
{$DEFINE OPTIONALPARAMS}
{$DEFINE SAMETEXT}
{$DEFINE VCL6ORABOVE}
{$DEFINE VCL6O}
{$ENDIF}
//Delphi 7
{$IFDEF VER150}
{$DEFINE VCL4ORABOVE}
{$DEFINE VCL5ORABOVE}
{$IFDEF BCB}
{$DEFINE CBUILDER}
{$DEFINE CBUILDER7}
{$ELSE}
{$DEFINE DELPHI}
{$DEFINE DELPHI7}
{$ENDIF}
{$DEFINE OVERLOADING}
{$DEFINE OPTIONALPARAMS}
{$DEFINE SAMETEXT}
{$DEFINE VCL6ORABOVE}
{$DEFINE VCL7ORABOVE}
{$DEFINE VCL6O}
{$DEFINE VCL70}
{$ENDIF}
//Delphi 8
{$IFDEF VER160}
{$DEFINE VCL4ORABOVE}
{$DEFINE VCL5ORABOVE}
{$IFDEF BCB}
{$DEFINE CBUILDER}
{$DEFINE CBUILDER8}
{$ELSE}
{$DEFINE DELPHI}
{$DEFINE DELPHI8}
{$ENDIF}
{$DEFINE OVERLOADING}
{$DEFINE OPTIONALPARAMS}
{$DEFINE SAMETEXT}
{$DEFINE VCL6ORABOVE}
{$DEFINE VCL7ORABOVE}
{$DEFINE VCL80RABOVE}
{$DEFINE VCL6O}
{$DEFINE VCL70}
{$DEFINE VCL80}
{$ENDIF}
//Delphi 9
{$IFDEF VER170}
{$DEFINE VCL4ORABOVE}
{$DEFINE VCL5ORABOVE}
{$IFDEF BCB}
{$DEFINE CBUILDER}
{$DEFINE CBUILDER9}
{$ELSE}
{$DEFINE DELPHI}
{$DEFINE DELPHI9}
{$ENDIF}
{$DEFINE OVERLOADING}
{$DEFINE OPTIONALPARAMS}
{$DEFINE SAMETEXT}
{$DEFINE VCL6ORABOVE}
{$DEFINE VCL7ORABOVE}
{$DEFINE VCL80RABOVE}
{$DEFINE VCL9ORABOVE}
{$DEFINE VCL6O}
{$DEFINE VCL70}
{$DEFINE VCL80}
{$DEFINE VCL90}
{$ENDIF}
//Delphi 10
{$IFDEF VER180}
{$DEFINE VCL4ORABOVE}
{$DEFINE VCL5ORABOVE}
{$IFDEF BCB}
{$DEFINE CBUILDER}
{$DEFINE CBUILDER10}
{$ELSE}
{$DEFINE DELPHI}
{$DEFINE DELPHI10}
{$ENDIF}
{$DEFINE OVERLOADING}
{$DEFINE OPTIONALPARAMS}
{$DEFINE SAMETEXT}
{$DEFINE VCL6ORABOVE}
{$DEFINE VCL7ORABOVE}
{$DEFINE VCL80RABOVE}
{$DEFINE VCL9ORABOVE}
{$DEFINE VCL1O0RABOVE}
{$DEFINE VCL6O}
{$DEFINE VCL70}
{$DEFINE VCL80}
{$DEFINE VCL90}
{$DEFINE VCL100}
{$ENDIF}
{$IFDEF LINUX}
{$DEFINE VCL4ORABOVE}
{$DEFINE VCL5ORABOVE}
{$DEFINE OVERLOADING}
{$DEFINE OPTIONALPARAMS}
{$DEFINE SAMETEXT}
{$DEFINE VCL6ORABOVE}
{$DEFINE VCL6O}
{$UNDEF DELPHI6}
{$DEFINE KYLIX}
{$IFDEF CONDITIONALEXPRESSIONS}
{$IF RTLVersion = 14.0}
{$DEFINE KYLIX2}
{$IFEND}
{$IF RTLVersion = 14.50}
{$DEFINE KYLIX3}
{$IFDEF BCB}
{$DEFINE BCBKYLIX3}
{$ENDIF}
{$IFEND}
{$IF RTLVersion = 15.0}
{$DEFINE KYLIX4}
{$IFEND}
{$ENDIF}
{$ENDIF}
如何利用预编译指令来判断Delphi 的版本转载的更多相关文章
- Delphi 预编译指令 的用法
A.3 使用条件编译指令条件编译指令是非常重要的编译指令,他控制着在不同条件下(例如,不同的操作系统)产生不同的代码.条件编译指令是包含在注释括号之内的,如下表所示. ...
- Delphi 预编译指令
<Delphi下深入Windows核心编程>(附录A Delphi编译指令说明)Delphi快速高小的编译器主要来自Object PASCAL的严谨,使用Delphi随时都在与编译器交流, ...
- Delphi中预编译指令
本文转自 http://www.cnblogs.com/JackSun/archive/2010/12/20/1911250.html <Delphi下深入Windows核心编程>(附录A ...
- c语言中条件编译相关的预编译指令
一. 内容概述 本文主要介绍c语言中条件编译相关的预编译指令,包括#define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. 二.条件编 ...
- iOS中的预编译指令的初步探究
目录 文件包含 #include #include_next #import 宏定义 #define #undef 条件编译 #if #else #endif #if define #ifdef #i ...
- c/c++中的预编译指令总结
预处理指令提供按条件跳过源文件中的节.报告错误和警告条件,以及描绘源代码的不同区域的能力.使用术语“预处理指令”只是为了与 C 和 C++ 编程语言保持一致.在 C# 中没有单独的预处理步骤:预处理指 ...
- C语言的预编译,程序员必须懂的知识!【预编译指令】【预编译过程】
由“源代码”到“可执行文件”的过程包括四个步骤:预编译.编译.汇编.链接.所以,首先就应该清楚的首要问题就是:预编译只是对程序的文本起作用,换句话说就是,预编译阶段仅仅对源代码的单词进行变换,而不是对 ...
- 利用预编译解决C/C++重复定义的错误 -2020.09.13
利用预编译解决C/C++重复定义的错误 -2020.09.13 我们现在有main.c和function.h两个文件 main.c #include <stdio.h> #include ...
- C/C++中的预编译指令
工作中遇到的: 一个头文件中的: #pragma warning(disable:4996)#pragma warning(disable:4244)#pragma warning(disable:4 ...
随机推荐
- [002] The Perks of Being a Wallflower - 读后记
The Perks of Being a Wallflower 今天(2015年10月30日 18:26:17)读完"The Perks of Being a Wallflower" ...
- Codevs 2776 寻找代表元(二分图匹配)
2776 寻找代表元 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题目描述 Description 广州二中苏元实验学校一共有n个社团,分别用1到n编号. 广州二 ...
- Oracle的安装
本人所使用的数据库平台为Oracle 11g 1.下载Oracle Oracle官网即可下载Oracle平台.不过网上资源丰富,大家也可在百度云网盘找到合适的版本. 附上本人网盘里存储的各个Oracl ...
- ASP.NET服务端基本控件介绍
ASP.NET服务端基本控件介绍 大概分为三种控件: HTML控件,ASP.NET把HTML控件当成普通字符串渲染到浏览器端,不去检查正确性,无法在服务端进行处理ASP.NET服务端控件,经过ASP. ...
- 【转】PHP网站常见安全漏洞,及相应防范措施总结
---恢复内容开始--- 目前,基于PHP的网站开发已经成为目前网站开发的主流,本文笔者重点从PHP网站攻击与安全防范方面进行探究,旨在减少网站漏洞,希望对大家有所帮助! 一.常见PHP网站安全漏洞 ...
- centos 忘记 root 密码
采用单用户维护模式可以重设置新密码 系统重启,按任意键进入如下所示的菜单: 选择“kernel /.....”根据提示,按下 "e" 就能进入grup 编辑模式,此时出现的画面类似 ...
- CSS小注意(初级)
前言 自己的前端技术相对后台来说要薄弱了很多,这一阵子在努力的学习中,添加样式这是最简单不过的东西了,但是今天我犯了一个错误,不知道大家是不是有时候也会忽略或者做同样的事情,我觉得很大部分人不会,废话 ...
- nginx服务器的日志太多:定期执行脚本删除
#!/bin/bash -type f -name *.log | xargs rm -f 脚本名字autodellog.sh 设置定时器(每天凌晨一点执行) [root@localhost ~]# ...
- S3C2440触摸屏控制总结
触摸屏控制原理,其实与ADC读取一个滑动变阻器中间触点电压的原理一样.只不过,读取触摸屏的X.Y方向上的电压需要两次,而且需要设置其工作模式以实现一个ADC读取两个通道的电压. S3C2440的ADC ...
- Memcached(二)Memcached Java API基础之MemcachedClient
1. 构造函数 public MemcachedClient(InetSocketAddress[] ia) throws IOException; public MemcachedClient(Li ...