Grundlagen zu einfachen Ausdrücken
In ihrer elementarsten Form sind FormCalc-Ausdrücke Gruppen von Operatoren, Schlüsselwörtern und Literalen, die logisch miteinander verknüpft sind. In den folgenden Fällen zum Beispiel handelt es sich jeweils um einfache Ausdrücke:
2
"abc"
2 - 3 * 10 / 2 + 7
Jeder FormCalc-Ausdruck wird zu einem einzelnen Wert aufgelöst. Dabei gilt die konventionelle Reihenfolge der Operationen, auch wenn diese Reihenfolge aus der Syntax der Ausdrücke nicht immer offensichtlich ist. Wenn beispielsweise die folgenden Ausdrücke auf Objekte in einem Formularentwurf angewandt werden, sehen die Ergebnisse wie folgt aus:
Ausdruck
|
Entspricht
|
Rückgabe
|
"abc"
|
"abc"
|
abc
|
2 - 3 * 10 / 2 + 7
|
2 - (3 * (10 / 2)) + 7
|
-6
|
10 * 3 + 5 * 4
|
(10 * 3) + (5 * 4)
|
50
|
0 and 1 or 2 > 1
|
(0 and 1) or (2 >1)
|
1
(true)
|
(2 < 3) nicht (1 == 1)
|
(2 < 3) not (1 == 1)
|
0
(false)
|
Wie aus der obigen Tabelle hervorgeht, besitzen alle FormCalc-Operatoren innerhalb von Ausdrücken eine bestimmte Priorität. Die folgende Tabelle zeigt die Hierarchie der Operatoren im Überblick:
Priorität
|
Operator
|
Höchste
|
=
|
|
(Unär) - , + , not
|
|
* , /
|
|
+ , -
|
|
< , <= , > , >= , lt , le , gt , ge
|
|
== , <> , eq , ne
|
|
& , and
|
Niedrigste
|
| , oder
|
Umwandlung von Operanden
Falls ein oder mehrere Operanden in einer bestimmten Operation nicht dem erwarteten Typ für die betreffende Operation entsprechen, wandelt FormCalc die Operanden in den benötigten Typ um. Wie diese Umwandlung erfolgt, hängt davon ab, welchen Operandentyp die Operation benötigt.
Numerische Operationen
Bei der Ausführung von numerischen Operationen, an denen nicht-numerische Operanden beteiligt sind, werden die nicht-numerischen Operanden zunächst in ihre numerische Entsprechung umgewandelt. Wenn sich der nicht-numerische Operand nicht erfolgreich in einen Zahlenwert konvertieren lässt, ist sein Wert 0. Wenn nullwertige Operanden in Zahlen umgewandelt werden, ist ihr Wert stets 0.
Die folgende Tabelle liefert einige Beispiele für die Anpassung von nicht-numerischen Operanden.
Ausdruck
|
Entspricht
|
Rückgabe
|
(5 - "abc") * 3
|
(5 - 0) * 3
|
15
|
"100" / 10e1
|
100 / 10e1
|
1
|
5 + null + 3
|
5 + 0 + 3
|
8
|
Boolesche Operationen
Bei der Ausführung von booleschen Operationen, an denen nicht-boolesche Operanden beteiligt sind, werden die nicht-booleschen Operanden zunächst in ihre booleschen Entsprechungen umgewandelt. Wenn sich der nicht-boolesche Operand nicht erfolgreich in einen von 0 verschiedenen Wert umwandeln lässt, hat er den Wert TRUE (1); andernfalls hat er den Wert FALSE (0). Wenn nullwertige Operanden in einen booleschen Wert umgewandelt werden, ist dieser Wert stets FALSE (0). Beispielsweise wird der Ausdruck
"abc" | 2
als
1
ausgewertet. Das heißt, false | true = true. Hingegen wird
if ("abc") then
10
else
20
endif
als
20
ausgewertet.
Zeichenfolgenoperationen
Wenn Zeichenfolgenoperationen bei Operanden ausgeführt werden, die keine Zeichenfolgen sind, werden diese Operanden zunächst in Zeichenfolgen umgewandelt. Dabei wird jeweils der Wert des Operanden als Zeichenfolge verwendet. Wenn nullwertige Operanden in Zeichenfolgen umgewandelt werden, entspricht ihr Wert stets der leeren Zeichenfolge. Beispielsweise wird der Ausdruck
concat("The total is ", 2, " dollars and ", 57, " cents.")
ausgewertet zu
"Die Summe beträgt 2 Dollar und 57 Cent."
Hinweis:
Wenn während der Auswertung eines Ausdrucks ein Zwischenschritt das Ergebnis NaN, +Inf oder -Inf liefert, erzeugt FormCalc einen Ausnahmefehler und überträgt diesen Fehler auf den Rest des Ausdrucks. Dadurch liefert dieser Ausdruck stets den Wert 0 – Beispiel:
3 / 0 + 1
wird als 0 ausgewertet.
|
|
|