Var und Let

Sowohl var als auch let deklarieren eine Variable. Anders als in JavaScript gibt es in Ninox zwischen let und var keinen Unterschied im Gültigkeitsbereich.

Der Typ der Variablen richtet sich nach dem Typ des zugewiesenen Wertes:

var t := "my text";
var b := false;
var n := 10;

Eine Variable darf innerhalb desselben Codes mehrfach deklariert werden. Sie behält dann Typ und Wert der bisherigen Zuweisung, bis die neue Deklaration erreicht ist:

var b := true;
dialog("Message 1", "Value of b: " + b, ["ok"]);
var b := 12;
dialog("Message 2", "Value of b: " + b, ["ok"]);

Verwechslung zwischen Variablennamen und IDs von Tabellen bzw. Feldern

Ninox speichert seinen Code in einer etwas anderen Form, als er auf dem Bildschirm erscheint: Feld- und Tabellennamen werden durch ihre IDs ersetzt, also durch Buchstaben.

Das folgende Skript etwa, das die Summe der verkauften Positionen berechnet:

sum('Invoice Items'.Total)

wird im Systemcode so gespeichert, wobei D die ID der Tabelle 'Invoice Items' und E die ID des Feldes Total ist:

sum(D.E)

Legt man in diesem Zusammenhang eine Variable D an, so kann das den Compiler verwirren: Im folgenden Systemcode wäre nicht mehr erkennbar, ob sich D.E auf eine Tabelle oder auf die zuvor deklarierte Variable D bezieht:

(var D := "hello"; sum(D.E))

Um solche Verwechslungen zu vermeiden, sollten Variablen Namen tragen, die kaum mit IDs oder mit Namen von Tabellen und Feldern zusammenfallen. Deshalb erhalten Variablen häufig kurze, kleingeschriebene Namen (etwa a, b oder c), damit sie nicht mit IDs verwechselt werden.