Dim, eeDim

Mittels Dim (Arbeitsspeicher) und eeDim (Eeprom) werden Variablen dimensioniert/angelegt.

Syntax:

Sichtbarkeit von Variablen

Namenskollisionen

Wird in einer Klasse, z.Bsp. im Hauptprogramm eine Variable mit dem Namen „myVar“„ und in einer seiner Methoden ebenfalls eine Variable mit dem Namen „myVar“ dimensioniert (als Parameter oder lokale Variable), dann wird die Variable der Methode bevorzugt behandelt. D.h. die Variable der Klasse wird innerhalb der Methode ausgeblendet (versteckt).

Static

Mit static werden die Variablen in einer Methode statisch angelegt. D.h. sie sind schon ab Beginn des gesamten Programms im Arbeitsspeicher dimensioniert und werden beim Aufruf einer Methode (im Gegensatz zu temporären Variablen) nicht initialisiert3) (nur beim Start des Controllers) und behalten somit ihre Werte vom letztmaligem Ausführen der Methode. Die Ausführungsgeschwindigkeit ist um Einiges schneller als bei temporären Variablen. Hierbei ist jedoch zu beachten, dass man die Methode dann nicht parallel mehrfach ausführen sollte, da die parallel ausgeführten Methoden dann auf dieselbe Variable zugreifen. Dies kann zu Fehlern führen, die schwer zu finden sind.

Standardmäßig werden die Variablen temporär innerhalb einer Methode angelegt, d.h. sie existieren nur solange die Methode ausgeführt wird.

InitialValue

Implementiert ab Version 2015.r1

InitialValue ist eine Funktionalität, mit der man den numerischen- und string-Variablen bei der Dimensionierung optional einen Startwert zuweisen kann (auch in Methoden). Hierbei werden alle angegebenen Variablen, auch Arrays mit dem Initialwert belegt.

dim a,b(7) as byte = 42
dim s as string = "hallo"

Hinweise

Allgemein

Eeprom

Beispiele

Beispiel Dimensionierung Arbeitsspeicher

dim a,b as byte
dim c(19) as integer    ' Word-Array mit 20 Elementen
dim s1 as string
dim s2(4) as string     ' String-Array mit 5 Elementen
procedure hallo(a as byte)
  dim c(19) as static integer    ' statisches Word-Array mit 20 Elementen
  dim s1 as string
endproc

Beispiel Dimensionierung Eeprom

eedim a,b as byte
eedim c(19) as integer      ' Word-Array mit 20 Elementen
eedim s1[20] as string      ' String mit 20 Zeichen Speicherplatz
eedim s2[10](4) as string   ' String-Array mit 5 Elementen, jeweils 10 Zeichen Speicherplatz
1) , 2) as of Version 2015.r1
3) Luna initialisiert Variablen, Objekte und Strukturen die Werte speichern mit dem Wert nil, was dem Zahlenwert 0 entspricht.