如何利用预编译指令来判断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 ...
随机推荐
- Codevs 3287 货车运输 2013年NOIP全国联赛提高组(带权LCA+并查集+最大生成树)
3287 货车运输 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description A 国有 n 座 ...
- 【CF493E】【数学】Vasya and Polynomial
Vasya is studying in the last class of school and soon he will take exams. He decided to study polyn ...
- Morgan Stanley telephone interview
Today is Monday, April 28. I get a telephone call from Morgan Stanley in Shanghai. My examiner is a ...
- 【转】JSON简介以及用法代码汇总
什么是JSON? JavaScript 对象表示法(JavaScript Object Notation). JSON是一种轻量级的数据交换格式,某个JSON格式的文件内部譬如可以长成这样: { &q ...
- couchDB入门
无意翻到一本新书<CouchDB权威指南> 发现这就是传说中的NoSQL,看排第一的是mangodb,redis有些人说是,有些人说不是. CouchDB的开发很天才,直接可以通过java ...
- js 中对象的特性
用Object.definedproperties 一次性添加或修改多个属性的特性和值. <script> var obj ={} Object.defineProperties(obj, ...
- PHP trim去空格函数
trim() 能除去的字符有“ ”空格."\t"水平制表符."\n"换行符."\r"回车符."\0字符串结束符".&qu ...
- WIFI破解总结
寒假回家了,由于家里没有宽带,而周围又有好多WIFI所以尝试了破解人家的WIFI,嘻嘻. 1.准备u盘一个,格式化 2.用制作工具,将cdlinux系统的镜像安装进u盘 3.用u盘启动电脑,进入cdl ...
- STM32库函数实现方法
一.概述 1.调用STM32库函数配置与直接配置寄存器 ① 直接配置寄存器 使用过51单片机的朋友都知道为了将IO口配置成某种特殊功能或者配置中断控制,我们先将需要如下步骤: 根据需要配置功能计算值- ...
- C++ 11 笔记 (四) : std::bind
std::bind 接受一个可调用的对象,一般就是函数呗.. 还是先上代码: void func(int x, int y, int z) { std::cout << "hel ...