Benutzer-Werkzeuge

Webseiten-Werkzeuge


k7:k7.1:start

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:

  • In den Zeilen 1 und 2 werden Berechnungen ausgeführt.
  • Der Datentyp Date darf bei einer Konstanten-Deklaration (Zeile 3) nicht verwendet werden.
  • In der Zeile 4 wird der Konstanten ZAHL_PI der Funktionswert einer Funktion zugewiesen, was nicht zulässig ist.

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:

  • Konstanten-Deklarationen,
  • Aufzählungsdeklarationen,
  • Eingebettete Array-Deklarationen.

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:

  • Die Kommentare beziehen sich hier nur auf die Deklarationen der Aufzählungen. Die weiteren Prozeduren zeigen die Verwendung der drei Listen von Integer-Konstanten.
  • In der Zeile 1 wird eine Liste von Integer-Konstanten angelegt, bei der automatisch der ersten Konstanten der Wert 0 zugeordnet wird. Bei allen weiteren Konstanten wird der Startwert um 1 erhöht. Sie hätten die Liste auch mit Spring=0, Summer=1, Autumn=2, Winter=3 deklarieren können.
  • In der zweiten Liste wird dem ersten Wert die Zahl 5 zugewiesen. Somit erhält die Konstante unten automatisch den Wert 6, links den Wert 7 und die 8 ist korrespondierender Wert für rechts.
  • In der dritten Liste wird jeder Konstanten in der Farb-Liste ein eigener ganzzahliger Wert (u.a. hexadezimal) zugewiesen.

7.1.4 Download

Die Website verwendet zwei temporäre Session-Cookies. Diese technisch notwendigen Cookies werden gelöscht, wenn der Web-Browser geschlossen wird! Informationen zu Cookies erhalten Sie in der Datenschutzerklärung.
k7/k7.1/start.txt · Zuletzt geändert: 13.10.2021 (Externe Bearbeitung)

Seiten-Werkzeuge