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