Sign in Join
Wiki copytemporary

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

OldNewLine
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).*

Back to history