2009-09-02 6 views
18

В Delphi 2010, если я хочу, чтобы это сделать:Что такое версия компилятора для Delphi 2010?

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

Какую версию # мне нужно использовать вместо «999»?

+0

Я думаю, что вы имеете в виду IfDef. – TrueWill

+0

ошибка да ... только опечатка. спасибо – JosephStyons

+0

см. http://stackoverflow.com/questions/750801/ – ulrichb

ответ

17

{$ IFDEF VER210}

+5

Этот файл почти всегда содержит последние определения: http://jcl.svn.sourceforge.net/viewvc/jcl/trunk/jcl/source/include/jedi.inc?view= разметка –

+1

@JeroenWiertPluimers, ссылка мертва. –

+0

@ToonKrijthe JCL/JEDI переехал из SF в GitHub некоторое время назад. Это тот, который долгое время не будет перемещаться и содержит все версии от Delphi 1 до самой последней версии (иногда включая версию в настоящее время в бета-версии), включая Kylix и FreePascal: https://github.com/ project-jedi/jedi/blob/master/jedi.inc –

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 

В Delphi 2007, VER180 и VER185 являются как определены. Это было для обратной совместимости с Delphi 2006, и чтобы вы могли также обнаружить D2007 специально.

Я не уверен, почему они сделали это между '06 и '07, но не для других выпусков. Кажется непоследовательным для меня (но это не так - см. Комментарий Барри Келли ниже).

+9

Вещь между 2006 и 2007 годами заключается в том, что компилятор в 2007 году использовал один и тот же формат DCU, поэтому компоненты людей все равно будут работать. –

+1

Кто-нибудь добавит Delphi XE3 в этот список? Я предполагаю его VER240? – sergeantKK

+1

добавил XE3, источник был http://delphi.wikia.com/wiki/CompilerVersion_Constant – JosephStyons

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

Я добавил версию компилятора для недавно Delphi (XE3..XE7) – naXa

+0

Пожалуйста, добавьте XE8 (29), RAD 10 Seattle (30) и RAD 10.1 Berlin (31) – kami

+0

Значение константы CompilerVersion такое же, как в VER ### define! – Nashev

1

В том же ключе, как комментарий Джейсона, если вы создаете код, который должен выполняться в текущих и более ранних версиях 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}'. –

+0

Согласовано. Гораздо яснее. – TheSteven

+2

Пока вы поддерживаете только Delphi 6+. Перед Delphi 6 нет {$ IF} –

Смежные вопросы