compile time expressions/de: what changed
Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.
| Old | New | Line | |
|---|---|---|---|
| 1 | 1 | │ **Deutsch (de)** │ | |
| 2 | - | ||
| 3 | 2 | ||
| 4 | 3 | Zurück zur [[using conditionals messages macros/de|Verwendung von Bedingungen, Nachrichten und Makros]]. | |
| 5 | 4 | ||
| 6 | 5 | Von Turbo Pascal einmal abgesehen, verwendet der Free Pascal Compiler bei Compile Time Ausdrücken (Compile time Expressions) eine strenge Compilierung. | |
| 7 | 6 | Zur Überprüfung von Compile Time Ausdrücken kann die Bedingung {$IF} verwendet werden. | |
| 8 | 7 | ||
| 9 | 8 | Beispiel für den Aufbau einer Abfrage: | |
| 10 | 9 | ``` | |
| 11 | 10 | {$if expression = ...} // Auswerung des Ausdrucks (Expression) auf Wahr oder Falsch | |
| 12 | 11 | ...; // wenn die Abfrage Wahr (True) liefert, wird dieser Abschnitt compiliert | |
| 13 | 12 | {$else} | |
| 14 | 13 | ...; // wenn die Abfrage Falsch (False) liefert, wird dieser Abschnitt compiliert | |
| 15 | 14 | {$endif} | |
| 16 | 15 | ``` | |
| 17 | 16 | ||
| 18 | 17 | ||
| 19 | 18 | Der Inhalt eines Ausdrucks muss zum Zeitpunkt des Compilerlaufs vorhanden sein. | |
| 20 | 19 | Folgende Konstrukte eignen sich dafür: | |
| 21 | 20 | ||
| 22 | 21 | * Konstanten (Zeichenketten (Strings, Zahlen) | |
| 23 | 22 | * Makros | |
| 24 | 23 | * Compile time Variablen (nur im MacPas Modus) | |
| 25 | 24 | * Compile time Ausdrücke (nur im MacPas Modus) | |
| 26 | 25 | ||
| 27 | 26 | ||
| 28 | 27 | Bei der Auswertung eines Symbols wird das Symbol immer durch seinen Wert ersetzt. | |
| 29 | 28 | Bei der Auswertung eines Ausdrucks sind folgende boolsche Operatoren erlaubt. | |
| 30 | 29 | =, <>, <, >, <=, >=, AND, NOT, OR, IN Der Operator IN prüft, ob ein Wert in einem [[Set/de|SET]] vorkommt. | |
| 31 | 30 | ||
| 32 | 31 | Folgende Funktionen können verwendet werden: | |
| 33 | 32 | ||
| 34 | - | ||
| 35 | - | ||
| 36 | - | ||
| 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} | |
| 37 | 34 | ---|--- | |
| 38 | - | ||
| 39 | - | ||
| 40 | - | ||
| 41 | - | ||
| 42 | - | ||
| 43 | - | ||
| 44 | - | ||
| 45 | - | ||
| 46 | - | ||
| 47 | - | ||
| 48 | - | ||
| 49 | - | ||
| 50 | - | ||
| 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 ...} | |
| 51 | 38 | OPTION(...) | Diese Funktion ist nur im MacPas Compiler Modus definiert. Die Funktion ist gleichbedeutend mit der Direktive {$IFOPT}. | |
| 52 | 39 | SIZEOF(...) | Diese Funktion ermittelt die Grösse des Datentyps (Variable oder Konstante). | |
| 53 | 40 | DECLARED(...) | Ergibt True, wenn ein Symbol an dieser Stelle deklariert (gültig) ist bzw. False wenn es nicht definiert ist. | |
| 54 | 41 | ||
| 55 | 42 | ||
| 56 | 43 | Bei der Auswertung von Ausdrücken gelten folgende Regeln: | |
| 57 | 44 | ||
| 58 | 45 | * Wenn alle Teile eines Ausdrucks bei ihrer Auswertung boolesche Werte (0 und 1 bzw. True und False) zurückgeben, dann verwendet die Auswertung Wahrheitswerte. | |
| 59 | 46 | * Wenn alle Teile eines Ausdrucks bei ihrer Auswertung numerische Werte zurückgeben, dann gibt der Ausdruck numerische Werte zurück. | |
| 60 | 47 | * In allen anderen Fällen, gibt der Ausdruck den Datentyp String zurück | |
| 61 | 48 | ||
| 62 | 49 | ||
| 63 | 50 | Wenn 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: | |
| 64 | 51 | {$if 0} wird als False ausgewertet und abgelehnt, während {$if 00} als True ausgewertet wird. | |
| 65 | 52 | ||
| 66 | 53 | --- | |
| 67 | 54 | *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).* |
