http://delphi.wikia.com/wiki/CompilerVersion_Constant
The CompilerVersion constant identifies the internal version number of the Delphi compiler.
It is defined in the System unit and may be referenced either in code just as any other constant:
if CompilerVersion = 20 then
sCompilerName := 'Delphi 2009';
or in conditional compiler expressions:
{$if CompilerVersion > 18}
// Delphi 2007 or later
{$ifend}
The CompilerVersion constant was introduced in Delphi 6 along with conditional expressions.
In earlier Delphi versions various compiler defined VERxxx symbols are used to determine compiler versions.
CompilerVersion values and the equivalent compiler defined symbols for the Delphi versions in which the CompilerVersion constant is defined are:
Compiler | CompilerVersion |
Defined Symbol |
---|---|---|
Delphi XE5 | 26 | VER260 |
Delphi XE4 | 25 | VER250 |
Delphi XE3 | 24 | VER240 |
Delphi XE2 | 23 | VER230 |
Delphi XE | 22 | VER220 |
Delphi 2010 | 21 | VER210 |
Delphi 2009 | 20 | VER200 |
Delphi 2007 .NET | 19 | VER190 |
Delphi 2007 | 18.5 | VER185 |
Delphi 2006 | 18 | VER180 |
Delphi 2005 | 17 | VER170 |
Delphi 8 .NET | 16 | VER160 |
Delphi 7 | 15 | VER150 |
Delphi 6 | 14 | VER140 |
Delphi 5 | 13 | VER130 |
Delphi 4 | 12 | VER120 |
Delphi 3 | 10 | VER100 |
Delphi 2 | 9 | VER90 |
Delphi 1 | 8 | VER80 |
http://delphi.wikia.com/wiki/Borland_Compiler_Conditional_Defines
Product Name | Version |
Conditional Define |
CompilerVersion |
---|---|---|---|
Embarcadero RAD Studio XE5 | 19.0 | VER260 | 26 |
Embarcadero RAD Studio XE4 | 18.0 | VER250 | 25 |
Embarcadero RAD Studio XE3 | 17.0 | VER240 | 24 |
Embarcadero RAD Studio XE2 | 16.0 | VER230 | 23 |
Embarcadero RAD Studio XE | 15.0 | VER220 | 22 |
Embarcadero RAD Studio 2010 | 14.0 | VER210 | 21 |
CodeGear C++ Builder 2009 | 12.0 | VER200 | 20 |
CodeGear Delphi 2007 for .NET | 11.0 | VER190 | 19? |
CodeGear Delphi 2007 for Win32 | 11.0 | VER180 and VER185 | 18, 18.5 |
Borland Developer Studio 2006 | 10.0 | VER180 | 18 |
Borland Delphi 2005 | 9.0 | VER170 | 17 |
Borland Delphi 8 for .NET | 8.0 | VER160 * | 16 |
C++BuilderX | ? | ? | |
Borland C#Builder | 1.0 | VER160 * | |
Borland Delphi 7 | 7.0 | VER150 | 15 |
Borland Kylix 3 | 3.0 | VER140 ** | |
Borland C++Builder 6 | ? | VER140 **(!!) | |
Borland Kylix 2 | 2.0 | VER140 ** | |
Borland Delphi 6 | 6.0 | VER140 ** | 14 |
Borland Kylix | 1.0 | VER140 ** | |
Borland C++Builder 5 | ? | VER130 *** | |
Borland Delphi 5 | 5.0 | VER130 *** | |
Borland C++Builder 4 | ? | VER125 | |
Borland Delphi 4 | 4.0 | VER120 | |
Borland C++Builder 3 | ? | VER110 **** | |
Borland Delphi 3 | 3.0 | VER100 | |
Borland C++ 5 | ? | ? | |
Borland C++Builder 1 | ? | VER93 | |
Borland Delphi 2 | 2.0 | VER90 | |
Borland C++ 4.5 | ? | ? | |
Borland Delphi | 1.0 | VER80 | |
Borland C++ 4 | ? | ? | |
Borland Pascal 7 | 7.0 | VER70 | |
Borland C++ 3.1 | ? | ? | |
Turbo Pascal for Windows 1.5 | 1.5 | VER70 | |
Turbo C++ for DOS 3 | ? | ? | |
Borland C++ 3 | ? | ? | |
Turbo C++ for Windows 3 (Win16) | ? | ? | |
Turbo Pascal for Windows 1.0 | 1.0 | ??? | |
Borland C++ 2 | ? | ? | |
Turbo Pascal 6 | 6.0 | VER60 | |
Turbo C++ for DOS | ? | ? | |
Turbo C for DOS 2 | ? | ? | |
Turbo Pascal 5.5 | 5.5 | VER55 | |
Turbo C for DOS 1.5 | ? | ? | |
Turbo Pascal 5 | 5.0 | VER50 | |
Turbo Pascal 4 | 4.0 | VER40 | |
Turbo C for DOS | ? | ? | |
Turbo Pascal 3 | 3.0 | ??? | |
Turbo Pascal 2 | 2.0 | ??? | |
Turbo Pascal 1 | 1.0 | ??? |
* This conditional define is shared by the Delphi compilers used to build C#Builder 1 and Delphi 8, which do not natively support Delphi for Win32.
This define is used in the "IDE Integration Packs" that were released to Borland partners in order to allow IDE plugins like ModelMaker Code Explorer
(http://www.modelmakertools.com/code-explorer/index.html) and
Castalia (http://www.delphi-expert.com/castalia3) to be compiled.
** This conditional define is shared between C++Builder 6, Delphi 6, Kylix 1, 2, and 3
(Checking for the conditional define "LINUX" helps to determine whether the compiler is Kylix or Delphi and "BCB" can be used to determine if C++Builder is being used).
*** This conditional define is shared with C++Builder 5
**** C++Builder 3.0 used VER110 (it had its own version of the Delphi compiler included).
**** CompilerVersion (Delphi 6 or later) can be used with conditional directives like
- {$IF CompilerVersion >= 20} {$DEFINE CanUnicode} {$IFEND}
or using code:
- if System.CompilerVersion >= 22 then <do something>;