Sie "hätten" aber auch einfach CompilerVersionen 35.0 35.1 35.2 35.3 machen können.
Gab es die RTLVersion nicht auch als Konstante?
[edit] Doch, aber RTLVersion <> RTLVersionXXX und außerdem ebenfalls nur .0
für Delphi 11.3 :
Code:
CompilerVersion = 35.0;
RTLVersion = 35.00;
RTLVersion111 = True;
RTLVersion112 = True;
RTLVersion113 = True;
FireMonkeyVersion = 270;
Delphi-Quellcode:
//{$IF (CompilerVersion = 35) and RTLVersion113} // 11.3 ist zwar ein Boolean, aber die Konstante existiert nicht immer -> True oder nicht existent (nie False)
{$IF (CompilerVersion = 35) and Declared(RTLVersion113)} // 11.3
{$IF (CompilerVersion = 35) and Declared(RTLVersion112)} // 11.2
{$IF (CompilerVersion = 35) and Declared(RTLVersion111)} // 11.1
{$IF (CompilerVersion = 35) and not Declared(RTLVersion111)} // 11.0
{$IF CompilerVersion = 35} // 11.x
{$IF CompilerVersion = 34} // 10.4
{$IF CompilerVersion = 33} // 10.3
{$IF CompilerVersion = 32} // 10.2
{$IF CompilerVersion = 31} // 10.1
{$IF CompilerVersion = 30} // 10
{$IF CompilerVersion = 29} // XE8
{$IF CompilerVersion = 28} // XE7
...
{$IF CompilerVersion = 22} // XE
...
{$IF CompilerVersion = 20.0} // 2009
{$IF CompilerVersion = 18.5} // 2007 (2007 hatte den selben Compiler wie 2006)
{$IF CompilerVersion = 18.0} // 2006
{$IF CompilerVersion = 17.0} // 2005
Statt = würde ich aber besser immer nur mit <= oder >= arbeiten.
{$IF CompilerVersion = 22.0}
entspricht
{$IFDEF VER220}
,
aber meisten will man ja nicht genau diese Version wissen, sondern ob es mindestens oder maximal diese Verison ist,
bzw. ein Von-Bis ala
{$IF (CompilerVersion >= 20) and (CompilerVersion <= 23)}
anstatt
{$IFDEF VER220}{$IFDEF VER220}{$IFDEF VER220}
ähhh
{$IF Defined(VER220) or Defined(VER220) or Defined(VER220)}