Alten Code mit alter DefinesUnit/INC/Sonstwas in zu neuem Delphi/Compiler und schon knallt es gern mal. (siehe das Beispiel mit der
JEDI-INC)
OK, wenn
diese Defines zum Code passt, dann isses schon OK.
Man darf beim Rumschreiben für ein neues Delphi nur nicht vergessen diese
Unit zu aktialisieren.
Aber gerade sowas war ja das Problem, z.B. mit der Versions-INC von den
JEDI.
Ein neues Delphi und schon war sowas wie
{$IFDEF DelphiXEorGreater}
plötzlich undefiniert, weil das Gerödel mit
{$IFDEF VER132}
plötzlich endete und es das neue VER789 nicht kannte.
Ähnlich wie beim RTLVersion113, wo die RTLVersion112, RTLVersion112 und RTLVersion111 weiter existieren, hätte der Compiler sowas wie die VERxxx-Defines auch aufheben können (also Delphi 11 hat die Define vom 10 und allen Vorhängern drin) ... aber egal, dank CompilerVersion und z.B. >= geht es auch ohne.
Es wäre nur einfacher, wenn es eben "eine" Konstante gäbe, anstatt den vielen RTLVersionXXX.
Willst du einen Bugfix für
genau 11.3 schreiben, dann
Zitat:
{$IF Declared(RTLVersion113) and not Declared(RTLVersion114)}
und hoffen der nächste Bugfix heißt wirklich Declared(RTLVersion114) oder es wird ein Delphi 12,
aber wehe es wird eine RTLVersion113b oder RTLVersion1132 oder ... (Delphi 11.3.2)
Mit
{$IF CompilerVersion > 123}
wurde es dann besser, seit den ConditionalDefines, gegenüber dem alten
{$IFDEF VER132}
,
aber jetzt mit RTLVersion112 wurde es wieder schlimmer.
(und da das RTLVersion112 ja eigentlich vom Compiler kommen könnte, hätte man es auch als DEFINE deklarieren können, aber als CONST wird es wenigstens über UnitGrenzen durchgereicht)