Inhaltsverzeichnis

7.1 Konstanten und Enumeration

Konstanten nehmen im Gegensatz zu Variablen beliebige, aber feste Werte auf, die Sie zur Laufzeit eines Programms nicht ändern können. Ein entsprechender Versuch würde mit einer Fehlermeldung enden! Auch bei den Konstanten müssen Sie bei der Deklaration den benötigten Datentyp angeben.

7.1.1 Konstanten

Konstanten-Datentypen können nur Boolean, Integer, Long, Float oder String sein. Mit den optionalen Schlüsselworten Public oder Private können Sie die Zugriffsrechte auf eine Konstante setzen. Nutzen Sie das Schlüsselwort Public, dann ist die deklarierte Konstante auch von den anderen Klassen aus erreichbar, die eine Referenz auf ein Objekt dieser Klasse haben. Ohne Public oder Private wird nur eine klassen-globale Konstante deklariert.

Public Const DATEI_PFAD As String = "/home/hans/daten"
Const KURS_ANZAHL As Integer = 7
Const FAKTOR As Float = 2.222 
Private Const DEBUG As Boolean = True

Diese Deklarationen von Konstanten sind fehlerhaft:

(1) Const WERT As Float = KURS_ANZAHL / FAKTOR 
(2) Const FAKTOR3 As Float = 2.71828182845 / 3.1415
(3) Const DATUM As Date = "12.12.2012"
(4) Const ZAHL_PI As Float = Pi()

Kommentar:

7.1.2 Konstanten - Erweiterung

In den Gambas-Compiler wurde die Möglichkeit eingebaut „konstante Ausdrücke“ zu verwenden (12. Oktober 2021).
Konstante Ausdrücke sind ganzzahlige Ausdrücke, die zur Kompilierzeit ausgewertet werden und die an folgenden Stellen verwendet werden können:

Diese Ausdrücke unterstützen nur eine Teilmenge der Gambas-Operatoren und vordefinierten Konstanten. Hier ist die Liste der Konstanten, die Sie innerhalb eines konstanten Ausdrucks verwenden können:

Arithmetische Operatoren: +, -, *, /, \, Div, %, Mod
Logische Operatoren: And, Or, Xor, Not
Bitweise Operatoren: Shl, Shr, Asl, Asr, Lsl, Lsr
Größe eines nativen numerischen oder Datums-Datentyps: SizeOf()
Native Datentyp-Konstanten wie gb.Boolean, gb.Byte, gb.Short, gb.Integer, gb.Long, gb.Single, gb.Float und gb.Date

WARNUNG!
Im Zusammenhang mit konstanten ganzzahligen Ausdrücken verhält sich der Operator / wie der ganzzahlige Divisionsoperator \!

Beachten Sie, dass die bitweisen Operatoren jetzt wie Operatoren verwendet werden können und im Kontext von konstanten Integer-Ausdrücken auch so verwendet werden müssen.

Beispiele:

Public Const Alpha As Integer = 1
Public Const Beta As Integer = (Alpha * 2) + 1
Public Const Delta As Byte = Beta + Alpha

Private Enum FirstFlag = 1 Shl 0, SecondFlag = 1 Shl 1, ThirdFlag = 1 Shl 2
Private SomeEmbeddedArray[Delta * SizeOf(gb.Short)] As String

Die entsprechende Dokumentation ist im Wiki verfügbar: https://gambaswiki.org/edit/lang/constexpr

7.1.3 Enumeration – Aufzählung

Eine Enumeration ist eine Aufzählung von Integer-Konstanten in einer Liste, bei denen jede Konstante einen eigenen Namen trägt und einen Integer-Wert besitzt. Die einzelnen Werte in der Liste werden durch Komma getrennt. Vergeben Sie keinen Integer-Wert, dann erhält der erste Wert in der Liste den Wert 0 und alle folgenden einen jeweils um 1 erhöhten Wert. Das Schlüsselwort ist Enum. Auch bei den Konstanten können Sie die Zugriffsrechte über die Schlüsselworte Public oder Private festlegen.

(1) Public Enum Spring, Summer, Autumn, Winter
(2) Private Enum oben = 5, unten, links, rechts
(3) Enum LehmannRot = 16711680, MeierGelb = &HFFFF44, BoegeGruen = &H00FF08
(4) 
(5) Public Sub SetJahreszeit(iJahreszeit As Integer)   
(6)   Select Case iJahreszeit
(7)     Case Spring 
(8)         Message.Info("Frühling lässt sein blaues Band ...!")
(9)     Case Summer 
(10)         Message.Info("Sommer, Sonne, Ostsee-Strand!")
(11)     Case Autumn 
(12)         Message.Info("Wenn im Herbst die Blätter fallen ...!")
(13)     Case Else ' Winter 
(14)         Message.Info("Endlich Winter!")
(15)   End Select ' iJahreszeit  
(16) End ' SetJahreszeit(...)
(17) 
(18) Public Sub SetColor(iColor As Integer)   
(19)   TextArea1.Background = iColor  
(20) End ' SetColor(...)
(21) 
(22) Public Sub btnEnumeration_Click()
(23)    SetJahreszeit(Winter)
(24)    SetColor(MeierGelb)
(25)    Message.Info("Der Wert für links ist " & links & ".")
(26) End ' btnEnumeration_Click()

Kommentare:

7.1.4 Download