Sign in Join
Wiki copytemporary

compile time expressions/de: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11│ **Deutsch (de)** │
2-****
32
43Zurück zur [[using conditionals messages macros/de|Verwendung von Bedingungen, Nachrichten und Makros]].
54
65Von Turbo Pascal einmal abgesehen, verwendet der Free Pascal Compiler bei Compile Time Ausdrücken (Compile time Expressions) eine strenge Compilierung.
76Zur Überprüfung von Compile Time Ausdrücken kann die Bedingung {$IF} verwendet werden.
87
98Beispiel für den Aufbau einer Abfrage:
109```
1110{$if expression = ...} // Auswerung des Ausdrucks (Expression) auf Wahr oder Falsch
1211 ...; // wenn die Abfrage Wahr (True) liefert, wird dieser Abschnitt compiliert
1312 {$else}
1413 ...; // wenn die Abfrage Falsch (False) liefert, wird dieser Abschnitt compiliert
1514 {$endif}
1615```
1716
1817
1918Der Inhalt eines Ausdrucks muss zum Zeitpunkt des Compilerlaufs vorhanden sein.
2019Folgende Konstrukte eignen sich dafür:
2120
2221 * Konstanten (Zeichenketten (Strings, Zahlen)
2322 * Makros
2423 * Compile time Variablen (nur im MacPas Modus)
2524 * Compile time Ausdrücke (nur im MacPas Modus)
2625
2726
2827Bei der Auswertung eines Symbols wird das Symbol immer durch seinen Wert ersetzt.
2928Bei der Auswertung eines Ausdrucks sind folgende boolsche Operatoren erlaubt.
3029=, <>, <, >, <=, >=, AND, NOT, OR, IN Der Operator IN prüft, ob ein Wert in einem [[Set/de|SET]] vorkommt.
3130
3231Folgende Funktionen können verwendet werden:
3332
34-TRUE | Diese Funktion ist nur im MacPas Compiler Modus definiert und prüft auf True. In anderen Compiler Modi kann für True 1 verwendet werden.
35-{$if Test = True}
36-{$if Test = 1}
33+TRUE | Diese Funktion ist nur im MacPas Compiler Modus definiert und prüft auf True. In anderen Compiler Modi kann für True 1 verwendet werden. · {$if Test = True} · {$if Test = 1}
3734---|---
38-FALSE | Diese Funktion ist nur im MacPas Compiler Modus definiert und prüft auf False. In anderen Compiler Modi kann 0 verwendet werden.
39-{$if Test = False}
40-{$if Test = 0}
41-DEFINED(...) | Diese Funktion liefert TRUE zurück, wenn das Symbol definiert ist. Im MacPas Compiler Modus sind die Klammern optional.
42-Beispiel:
43-{$IF DEFINED(...)}
44-ist gleichbedeutend mit
45-{$IF DEFINED ...}
46-UNDEFINED ... | Diese Funktion ist nur im MacPas Compiler Modus definiert. Die Funktion liefert TRUE zurück, wenn das Symbol nicht definiert ist und False wenn das Symbol definiert ist.
47-Beispiel:
48-{$IF DEFINED(...)}
49-ist gleichbedeutend mit
50-{$IF DEFINED ...}
35+FALSE | Diese Funktion ist nur im MacPas Compiler Modus definiert und prüft auf False. In anderen Compiler Modi kann 0 verwendet werden. · {$if Test = False} · {$if Test = 0}
36+DEFINED(...) | Diese Funktion liefert TRUE zurück, wenn das Symbol definiert ist. Im MacPas Compiler Modus sind die Klammern optional. · Beispiel: · {$IF DEFINED(...)} · ist gleichbedeutend mit · {$IF DEFINED ...}
37+UNDEFINED ... | Diese Funktion ist nur im MacPas Compiler Modus definiert. Die Funktion liefert TRUE zurück, wenn das Symbol nicht definiert ist und False wenn das Symbol definiert ist. · Beispiel: · {$IF DEFINED(...)} · ist gleichbedeutend mit · {$IF DEFINED ...}
5138OPTION(...) | Diese Funktion ist nur im MacPas Compiler Modus definiert. Die Funktion ist gleichbedeutend mit der Direktive {$IFOPT}.
5239SIZEOF(...) | Diese Funktion ermittelt die Grösse des Datentyps (Variable oder Konstante).
5340DECLARED(...) | Ergibt True, wenn ein Symbol an dieser Stelle deklariert (gültig) ist bzw. False wenn es nicht definiert ist.
5441
5542
5643Bei der Auswertung von Ausdrücken gelten folgende Regeln:
5744
5845 * Wenn alle Teile eines Ausdrucks bei ihrer Auswertung boolesche Werte (0 und 1 bzw. True und False) zurückgeben, dann verwendet die Auswertung Wahrheitswerte.
5946 * Wenn alle Teile eines Ausdrucks bei ihrer Auswertung numerische Werte zurückgeben, dann gibt der Ausdruck numerische Werte zurück.
6047 * In allen anderen Fällen, gibt der Ausdruck den Datentyp String zurück
6148
6249
6350Wenn der vollständige Auswertung des Ausdrucks '0' ergibt, dann ergibt das False und wird abgwiesen. Im anderen Fall ergibt die Auswertung True und wird akzeptiert. Das hat möglicherweise unerwarete Konsequenzen:
6451{$if 0} wird als False ausgewertet und abgelehnt, während {$if 00} als True ausgewertet wird.
6552
6653---
6754*From the Free Pascal wiki, page "compile time expressions/de", as the Internet Archive kept it on 2023-06-04, last changed on 2020-02-12. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history