- 13 May 2024
- 1 Minute zum Lesen
- Drucken
- DunkelLicht
- pdf
Variablendeklaration
- Aktualisiert am 13 May 2024
- 1 Minute zum Lesen
- Drucken
- DunkelLicht
- pdf
Generell machen Variablendefinitionen die ohne den Befehl
DEFINE VARIABLE varName
passieren diese immer global, d.h. das Gegenteil zu gebräuchlichen Sprachen ist der Fall! Da man in den meisten Fällen in Makros, Prozeduren oder Funktionen mit lokalen Variablen zurechtkommt, empfiehlt es sich, diese auch so zu definieren:
PROCEDURE DpmFpBreite
DEFINE VARIABLE sE
sE = ""
RUN ExtendedRangeMinMaxBreite(sE, "mm")
FpBreite.EXTRANGE = sE
END
Dies trifft zumeist auf Laufvariablen wie i in for-Schleifen zu. Der Hauptvorteil bei dieser Vorgehensweise ist beim Makrointerpreter in der Variablentabelle ersichtlich:
Würde man nämlich auf eine solche Vorgehensweise verzichten wäre diese sehr schnell sehr unübersichtlich, da eine jede einzelne Variable einer Version hier aufscheint.
Sobald eine Variable mit DEFINE VARIABLE definiert wurde, gilt diese nur innerhalb eines Makros, Prozedur oder Funktion, d.h. wird ein solcher Block verlassen, existiert diese Variable nicht mehr. Durch eine Deklaration wird noch kein Typ festgelegt, dies passiert erst immer bei einer Initialisierung:
DEFINE VARIABLE i !Deklaration
i =0 !Definition durch Initialisierung (Typ ist jetzt NUM)
FOR i = 1 TO 5 DO BEGIN
/* Anweisungen */
END
i = "100|1000||mm" !Ist unzulässig und erzeugt einen Fehler
!da zuvor ein numerische Wert zugewiesen wurde
!Globale Variablendefinition
gModellTyp = LEFT$(WS_MODELL,3)
Globale Variablen werden oft in Strukturvariablen zusammengefasst, da diese problemlos an Prozeduren übergeben werden können und dementsprechend auch sehr schön strukturiert in der Variablentabelle angezeigt werden können.
objFenster = ""
objFenster.Typ = "S"
objFenster.Rahmenbreite = 1500
objFenster.Rahmenhoehe = 1000
Variablen werden mit der ersten Zuweisung definiert und deklariert, d.h. es gibt sehr wohl Datentypen, aber diese werden nicht in der Deklaration angegeben da die Zuweisung den Typ bestimmt.
RAM_TR = 10 !Definition einer globalen ganzzahligen Zahl (INT)
UFaktor = 0.5 !Definition einer globalen Gleitkommazahl (FLOAT)
Fixer_Text = "Eingabe ungültig!" !Definition eines globalen Stings
Die Ausnahme sind hier Instanzen oder Deklarationen betreffend DotNet-Wrapper:
AssemblyCache = NEW STATIC DotNetWrapper.AssemblyCache
DEFINE VARIABLE mO AS object
Findet nur in Spezialprojekten Anwendung und wird daher nicht näher erläutert!