Variablen
Es gibt numerische Variablen und Textvariablen, die im weitern wie allgemein üblich als "Strings" bezeichnet werden. Ein Wertzuweisung erfolgt mit dem "=
" Operator. Einer Wertzuweisung kann Befehl LET
vorangestellt werden, ist aber nicht üblich. Variablennamen müssen mit einem Buchstaben oder einen "_" (Underline) beginnen und dürfen weiters nur Buchstaben, Ziffern und "_" enthalten. Als Konvention wird in der Dokumentation vorgeschlagen Variablennamen in Kleinbuchstaben und BASIC Konstrukte in Großbuchstaben zu schreiben. Leider hält sich der Allplan eigene Scripteditor nicht an diese Konvention und konvertiert die Referenzparameter ref_x
, ref_y
und ref_z
bei jeder Syntaxprüfung in Großbuchstaben.
Variablen müssen vor ihrer ersten Verwendung NICHT deklariert oder initialisiert werden, das ist ein häufiger Grund für Programmierfehler, da ein falsch geschriebener Variablenname zu keiner Fehlermeldung führt. Meiner Meinung nach sollte dieses Verhalten des Scriptinterpreters von Nemetschek dahin geändert werden, dass uninitialisierte Variablen in Zukunft zu einer Fehlermeldung führen.
myPI = 3.1415
Radius8574645 = 12.0
Umfang = 2 * Radius8574645 * myPl ! Umfang ist immer 0 da myPl per Voreinstellung 0. ist
Der Typ einer Variable ergibt sich ausschließlich aus der Wertzuweisung, z.B.:
a = 1.0 ! in Fließkommazahlen immer den Dezimalpunkt "." verwenden
a = `Text` ! wichtig: Backticks "`" verwenden, um ein einfaches Übersetzen in andere Sprachen zu ermöglichen.
Mehrzeiliger Text
Manche Befehle akzeptieren auch mehrzeiligen Text, diese Strings sind in der Form:
"1. Zeile
2. Zeile"
einzugeben.
Strings und String-Variablen können mit +
aneinander gefügt werden.
count = "3"
msg_str = count + " Stück"
Arrays
Mit DIM
kann man Variablenfelder (im weiteren Arrays genannt) erstellen, wobei die exakte Größe des Arrays nicht angegeben werden muss, alle Arrays ohne Größenangabe sind dynamisch, und immer so groß wie der größte verwendete Index im Script, alle nicht initialisierten Felder haben automatischen numerischen Wert 0. Die Zählung beginnt mit Index 1
, und nicht wie in den meisten anderen Programmiersprachen mit 0
. Man kann Arrays auch keine Initialwerte bei der Erstellung mitgeben, somit funktioniert folgendes leider NICHT: DIM a = [1, 12, 45, 23, 45]
Arrays könne ein- oder zweidimensional (DIM a[ ][ ]
)sein.
Beispiele
DIM a [ 5 ] ! Array mit fixer Größe
a[6] = 666 ! out of range error
DIM b [] ! dynamisches Array
b [5] = 1.0
b [6] = `Text` ! mischen von Typen ist möglich
VARDIM1
Mit VARDIM1(varname)
kann man den größten Index der 1. Dimension abfragen. Dynamische Arrays ohne Inhalt liefern den Wert 0.
VARDIM2
Mit VARDIM2(varname)
kann man den größten Index der 2. Dimension abfragen. Eindimensionale Arrays liefern den Wert 0.
VARTYPE
Mit VARTYPE(varname)
kann Typ einer Variable abgefragt werden, das Ergebnis ist 1
für eine numerische Variable, und 2
für eine String-Variable.