BASIC Referenz‎ > ‎

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.