Nach der Delphi-Dokumentation:
http://docwiki.embarcadero.com/RADStudio/XE6/en/Conditional_compilation_%28Delphi%29
Die bedingten Direktiven {$ IFDEF}, {$ IFNDEF}, {$ IF}, {$ ELSEIF}, {$ ELSE}, { Mit $ ENDIF} und {$ IFEND} können Sie Code basierend auf dem Status eines bedingten Symbols kompilieren oder unterdrücken.
Die {$IFDEF}
und {$IFNDEF}
können Sie nur mit definiert durch {$DEFINE ...}
zuvor an die Arbeit.
jedoch die {$IF ..}
Richtlinie viel flexibler ist, weil:
Delphi-Bezeichner nicht in bedingten Direktiven andere als {$ IF} referenziert werden und {$ ELSEIF}.
const LibVersion = 6; //One constant to define the libversion.
{$IF LibVersion >= 10.0}
do stuff that covers LibVersion 10,11 and 12
{$ELSEIF Libversion > 5.0}
do other stuff that covers LibVersion 6,7,8,9
{$IFEND}
Wenn Sie versucht, das zu tun, mit definiert Sie
{$DEFINE Lib1}
{$DEFINE Lib2}
{$DEFINE Lib3}
{$DEFINE Lib4}
{$DEFINE Lib5}
{$DEFINE Lib6} //all previous versions have to be defined.
{$IFDEF Lib10}
do stuff that covers LibVersion 10, 11 and 12
{$ELSE}
{$IFDEF Lib6}
do stuff that covers LibVersion 6,7,8,9
{$ENDIF}
{$ENDIF}
Es ist nur eine etwas erweiterte Version der Verarbeitung der definiert tun müsste.
Die Notation {$ IF ..} ist etwas leistungsfähiger und erlaubt Ihnen, konstante Ausdrücke abzufragen und nicht nur zu definieren.
Die {$IF ..}
Richtlinie wurde 6.
in Delphi eingeführt Ich denke, Embarcadero die Code-Basis zu bereinigen entschieden.
Uhm, weil '$ ELSEIF' mit '$ IFDEF' nicht verwendet werden kann? – TLama
Ich vermutete es auch, aber vielleicht gibt es noch andere Vorteile? Die Veränderung ist ziemlich massiv - rund um alle Einheiten. –
Sehr schwer zu sehen, warum @TLama gab. –