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