2009-09-02 33 views
18

德尔福2010年,如果我想这样做:Delphi 2010的编译器版本是什么?

{$IFDEF VER999} 
//some delphi 2010-specific code here 
{$ENDIF} 

,我需要代替“999”使用什么版本#?

+0

我想你的意思IFDEF。 – TrueWill 2009-09-02 23:46:42

+0

错误是......只是一个错字。谢谢 – JosephStyons 2009-09-03 00:16:26

+0

请参阅http://stackoverflow.com/questions/750801/ – ulrichb 2010-05-17 21:43:57

回答

17

{$ IFDEF VER210}

+5

该文件几乎总是包含最新的定义:http://jcl.svn.sourceforge.net/viewvc/jcl/trunk/jcl/source/include/jedi.inc?view=标记 – 2009-10-15 12:49:35

+1

@JeroenWiertPluimers,链接已死亡。 – 2015-01-27 12:00:56

+0

@ToonKrijthe JCL/JEDI不久前从SF转移到GitHub。这是一个很长时间不会移动的版本,包含Delphi 1的所有版本,直到最新发布的版本(有时包括目前处于beta版本的版本),包括Kylix和FreePascal:https://github.com/ project-jedi/jedi/blob/master/jedi.inc – 2015-01-29 11:54:19

58

这里的list of compiler versions

{$IFDEF VER40} - Turbo pascal 4 
{$IFDEF VER50} - Turbo pascal 5 
{$IFDEF VER55} - Turbo pascal 5.5 
{$IFDEF VER60} - Turbo pascal 6 
{$IFDEF VER70} - Borland pascal 7 (And turbo pascal 1.5 for windows) 
{$IFDEF VER80} - Delphi 1 
{$IFDEF VER90} - Delphi 2 
{$IFDEF VER100} - Delphi 3 
{$IFDEF VER120} - Delphi 4 
{$IFDEF VER130} - Delphi 5 
{$IFDEF VER140} - Delphi 6 
{$IFDEF VER150} - Delphi 7 
{$IFDEF VER160} - Delphi 8 
{$IFDEF VER170} - Delphi 2005 
{$IFDEF VER180} - Delphi 2006 
{$IFDEF VER180} - Delphi 2007 
{$IFDEF VER185} - Delphi 2007 
{$IFDEF VER200} - Delphi 2009 
{$IFDEF VER210} - Delphi 2010 
{$IFDEF VER220} - Delphi XE 
{$IFDEF VER230} - Delphi XE2 
{$IFDEF VER240} - Delphi XE3 
{$IFDEF VER250} - Delphi XE4 
{$IFDEF VER260} - Delphi XE5 
{$IFDEF VER265} - Appmethod 1.0 
{$IFDEF VER270} - Delphi XE6 
{$IFDEF VER280} - Delphi XE7 
{$IFDEF VER290} - Delphi XE8 
{$IFDEF VER300} - Delphi 10 Seattle 
{$IFDEF VER310} - Delphi 10.1 Berlin 
{$IFDEF VER320} - Delphi 10.2 Tokyo 

2007年德尔福,VER180VER185定义都。这是为了与Delphi 2006向后兼容,并确保您也可以专门检测D2007。

我不确定他们为什么会在'06和'07之间做到这一点,但是不能用于其他版本。似乎不一致(但它不是 - 请参阅下面的Barry Kelly的评论)。

+9

从2006年到2007年,2007年的编译器使用了相同的DCU格式,所以人们的组件仍然可以工作。 – 2009-10-15 22:36:55

+1

有人会将Delphi XE3添加到此列表中吗?我猜测它的VER240? – sergeantKK 2012-10-08 15:12:02

+1

添加XE3,来源是http://delphi.wikia.com/wiki/CompilerVersion_Constant – JosephStyons 2012-10-09 18:01:51

30

如果你用Delphi 6个工作以后,你可以使用CompilerVersion

{$IF CompilerVersion >= 18.5} 
//some code only compiled for Delphi 2007 and later 
{$IFEND} 
 
Delphi 10.2 Tokyo - 32 
Delphi 10.1 Berlin - 31 
Delphi 10 Seattle - 30 
Delphi XE8   - 29 
Delphi XE7   - 28 
Delphi XE6   - 27 
Appmethod 1.0  - 26.5 
Delphi XE5   - 26 
Delphi XE4   - 25 
Delphi XE3   - 24 
Delphi XE2   - 23 
Delphi XE   - 22 
Delphi 2010  - 21 
Delphi 2009  - 20 
Delphi 2007  - 18.5 
Delphi 2006  - 18 
Delphi 2005  - 17 
Delphi 8   - 16 
Delphi 7   - 15 
Delphi 6   - 14 
+0

我已经加入编译器版本最近德尔福(XE3..XE7 ) – naXa 2015-01-27 07:49:27

+0

请添加XE8(29),RAD 10 Seattle(30)和RAD 10.1 Berlin(31) – kami 2016-06-20 18:27:30

+0

CompilerVersion常量的值与VER中的值相同### define! – Nashev 2017-09-20 15:16:44

8

这里是一个wiki page有条件的定义。

1

按照同样的思路为Jason的评论,如果你正在创建一个需要在Delphi的当前和旧版本运行的代码,你可能想要做这样的事情:

{$IF CompilerVersion > 18.5} 
    //Delphi 2009 or higher 
    //Unicode version of code 
{$ELSE} 
    //Delphi 2007 and earlier 
    //NON-Unicode version of code 
{$IFEND} 
+6

如果条件编译的原因是Unicode或缺乏,请使用'{$ IFDEF UNICODE}'。 – 2011-05-24 00:40:57

+0

同意。更清楚。 – TheSteven 2011-09-08 21:16:01

+2

只要你只支持Delphi 6+。在Delphi 6之前没有{$ IF} – 2014-05-17 15:01:22

相关问题