Embarcadero arbeitet an einer neuen Version von Delphi (und RAD Studio) mit dem Codenamen Ganymede, die sich derzeit im Beta-Stadium befindet. In diesem Blogbeitrag und weiteren, die folgen werden, möchten wir Ihnen einige der spannenden neuen Funktionen dieser Version vorstellen. Dieser Blogbeitrag basiert auf einer Vorabversion der RAD Studio-Software. Bis zum GA-Release des Produkts ist keine Funktion verbindlich.
Neben anderen Verbesserungen an der Delphi-Sprache und ihren Compilern wird mit RAD Studio 13 erstmals ein bedingter Operator (oder ternärer Operator) in die Object Pascal-Sprache eingeführt. Dies ist seit geraumer Zeit eine der von Kunden am häufigsten geforderten Sprachverbesserungen, und diese Funktion ist in der aktuellen Ganymede-Beta zum Testen verfügbar.
Table of Contents
Delphi hat jetzt einen ternären Operator, der eine neue Form des If-Schlüsselworts verwendet
Ein ternärer oder bedingter Operator ist ein Operator, der sich wie eine if-Anweisung verhält, mit einer Bedingung und zwei möglichen Werten. In vielen anderen Programmiersprachen wird der ternäre Operator mit der Syntax?: angegeben. In Delphi wollen wir so weit wie möglich eine vertraute und an Pascal orientierte Syntax beibehalten, daher haben wir uns entschieden, das if Symbol als Operator zu verwenden. Mit anderen Worten,if kann jetzt verwendet werden, um eine Anweisung oder einen Operator anzuzeigen, je nach Position im Quellcode. Dies ist ein Beispiel für einen einfachen Zuweisungsausdruck in zwei Versionen, die erste basiert auf einer traditionellen if-Anweisung und die zweite auf einem if-Operator:
// klassische If-Anweisung
if Left < 100 then
X := 22
else
X := 45;
// Zuweisung mit dem if-Operator
X := if Left < 100 then 22 else 45;
Der Hauptunterschied besteht darin, dass der if-Operator als Teil eines beliebigen Ausdrucks verwendet werden kann, und zwar wie folgt:
|
1 |
ShowMessage (if Left < 100 then 'Small' else 'Big') |
Hier sieht man diesen Code im Editor der 64 Bit-Version der RAD Studio IDE unter Verwendung der RAD Studio 13 Beta.

Der if-Operator in Aktion im RAD Studio 13-Editor (in der 64 Bit-Version der IDE)
Was sind die Kompatibilitätsregeln für den ternären Operator von Delphi?
Für die Kohärenz zwischen den Typen der beiden Unterausdrücke gibt es besondere Regeln. Kurz gesagt, sie müssen vom gleichen Typ sein, oder ein direkt zuweisbarer Typ. Wenn dies nicht der Fall ist, erhält man einen Compilerfehler, wie in diesem Fall:
[dcc32 Fehler] Unit31.pas(38): E2010 Inkompatible Typen: 'string' und 'Integer'

Ein Beispiel für einen Inkompatibilitätsfehlern des if-Operators
In der Beta-Dokumentation gibt es eine sehr lange Tabelle mit den verschiedenen Typkombinationen, die mit dem neuenif Ausdruck verwendet werden können, und dem resultierenden Typ des Ausdrucks für jede dieser Kombinationen. Diese Tabelle muss hier nicht wiedergeben werden, da sie einige Seiten lang ist und eine Detailtiefe aufweist, die für diese Einführung nicht erforderlich ist.
Wie lautet die Prioritätsreihenfolge für den ternären Delphi-Operator?
Bei der Verwendung des if-then-else-Operators innerhalb eines Ausdrucks ist zu beachten, dass andere Operationen (z. B. Addition) höhere Prioritäten haben, was zu unerwarteten Fehlern führen kann. Hier sollten zusätzliche Klammern verwendet werden, wie man es oft bei booleschen Operatoren mit niedriger Priorität durchführen sollte. Schauen wir uns diesen nachfolgenden Code an:
|
1 |
ShowMessage (if Left < 100 then 'Small' else 'Large' + 'Nice') |
Was wird ausgegeben, wennLeft kleiner als 100 ist? Ist es „Small“ oder „SmallNice“? Es ist ersteres, weil das+ eine höhere Priorität hat und es sich so darstellt:
|
1 |
ShowMessage (if Left < 100 then 'Small' else ('Large' + 'Nice')) |
wenn das zusätzliche Wort immer hinzugefügt werden soll, sollte man das so verwenden:
|
1 |
ShowMessage ((if Left < 100 then 'Small' else 'Large') + 'Nice') |
RAD Studio 13 wird eine Reihe weiterer neuer Funktionen und Modernisierungen für die Sprache Delphi mit sich bringen
Dies wird zwar nicht die einzige Änderung der Delphi-Sprache in RAD Studio 13 sein, aber es ist eine der auffälligsten und am häufigsten nachgefragten Änderungen an der Sprache, die wir einführen werden. Es gibt weitere neue Operatoren und einige neue und erweiterte Compiler-Direktiven. Insgesamt wird Delphi 13 (als Teil von RAD Studio 13) ein sehr wichtiges Release für die Entwicklung der Delphi Object Pascal Sprache sein. Hier folgen demnächst noch mehr technische Beiträge.
Dieser Blogbeitrag basiert auf einer Vorabversion der RAD Studio-Software. Bis zum Veröffentlichungszeitpunkt des Produkts ist noch keine Funktion festgelegt.
Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Free Delphi Community Edition Free C++Builder Community Edition






Lotta meint:
Hey,
Der Operator liest sich ja sogar noch besser als der in C++! ;-P
Hat der neue Operator eigendlich Auswirkung auf die Programmgröße,
oder ist er „nur“ syntaktischer Zucker?
[translation]
Lotta Says: Hey, The operator reads even better than the one in C++! ;-P
Does the new operator actually affect the program size,
or is it „just“ syntactic sugar?
—————-
Well, it does work differently to other ways of achieving the same thing in Delphi and it makes the expressions in the code much smaller. You also don’t been to have
If/Thenor other conditional blocks which helps reduce the number of lines of code. Whether that ultimately means smaller output in the compilation very much depends on where it’s being used.