In diesem Kapitel erlernt der Leser auf anschauliche Weise die Sprachgrundlagen von Visual Basic, in Verbindung mit den gängigen Steuerelementen von Windows-Programmen.
2 Grundlagen
2.1 Variablen und Datentypen 

Variablen dienen zur vorübergehenden Speicherung von Daten, die sich zur Laufzeit eines Programms ändern können. Eine Variable besitzt einen eindeutigen Namen, unter dem sie angesprochen werden kann.
2.1.1 Namen, Werte 

Namensregeln
Für die Namen von Variablen gelten in Visual Basic die folgenden Regeln:
- Sie beginnen mit einem Buchstaben.
- Sie können nur aus Buchstaben, Zahlen und einigen wenigen Sonderzeichen (z. B. dem Unterstrich _ ) bestehen.
- Innerhalb eines Gültigkeitsbereichs darf es keine zwei Variablen mit dem gleichen Namen geben (siehe Abschnitt 2.1.4, »Gültigkeitsbereich«).
Variablen erhalten ihre Werte durch Zuweisung per Gleichheitszeichen. Einer Variablen sollte vor ihrer ersten Benutzung ein Wert zugewiesen werden. Dadurch werden Programme eindeutiger, lesbarer und fehlerfreier.
2.1.2 Deklarationen 

Neben dem Namen besitzt jede Variable einen Datentyp, der die Art der Information bestimmt, die gespeichert werden kann. Der Entwickler wählt den Datentyp danach aus, ob er Text, Zahlen ohne Nachkommastellen, Zahlen mit Nachkommastellen oder z. B. Datumsangaben speichern möchte.
Auswahl des Datentyps
Außerdem muss er sich noch Gedanken über die Größe des Bereichs machen, den die Zahl oder der Text annehmen könnte. Er sollte versuchen, den Datentyp mit dem geringsten Speicherbedarf zu verwenden; dieser gewährleistet gleichzeitig auch eine schnellere Verarbeitung. Im folgenden Abschnitt 2.1.3, »Datentypen«, finden Sie eine Liste der Datentypen mit Name, Speicherbedarf und Wertebereich.
Variablen sollten in Visual Basic immer mit einem Datentyp deklariert werden. Dies beugt Fehlern und unnötig hohem Speicherbedarf vor.
2.1.3 Datentypen 

Die folgende Liste enthält die wichtigsten von Visual Basic unterstützten Datentypen sowie deren Speicherbedarf und Wertebereich.
- Datentyp Boolean, Speicherbedarf plattformabhängig, Wertebereich True oder False (»Wahr« oder »Falsch«)
- Datentyp Byte, Speicherbedarf 1 Byte, Wertebereich von 0 bis 255
- Datentyp Char, Speicherbedarf 2 Bytes, Wertebereich von 0 bis 65536
- Datentyp Date, Speicherbedarf 8 Bytes, Wertebereich vom 1. Januar 1 bis zum 31. Dezember 9999
- Datentyp Double, Speicherbedarf 8 Bytes, Gleitkommazahl mit doppelter Genauigkeit, Wertebereich von –1,79769313486231570E+308 bis 4,94065645841246544E-324 für negative Werte und von 4,94065645841246544E-324 bis 1,79769313486231570E+308 für positive Werte
Double
- Datentyp Integer, Speicherbedarf 4 Bytes, Wertebereich von –2.147.483.648 bis 2.147.483.647
Integer
- Datentyp Long, Speicherbedarf 4 Bytes, lange Ganzzahl, Wertebereich von –9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807
- Datentyp Object, Speicherbedarf 4–8 Bytes, Wertebereich beliebig
- Datentyp Short, Speicherbedarf 2 Bytes, Wertebereich von –32,768 bis 32,767
- Datentyp Single, Speicherbedarf 4 Bytes, Gleitkommazahl mit einfacher Genauigkeit; Wertebereich: 3,4028235E+38 bis –1,401298E-45 für negative Werte und 1,401298E-45 bis 3,4028235E+38 für positive Werte
- Datentyp String, Speicherbedarf plattformabhängig, Zeichenkette mit variabler Länge
String
- benutzerdefinierte Struktur, Speicherbedarf abhängig von den Elementen, jedes Element hat seinen eigenen Datentyp und damit seinen eigenen Wertebereich
Im folgenden Beispiel werden Variablen der wichtigsten Typen deklariert, mit Werten versehen und in einem Label angezeigt (p0201).
Public Class frm0201
Private Sub cmdAnzeige_Click( ... ) Handles ...
Dim Bo As Boolean
Dim By As Byte
Dim Ch As Char
Dim Dt As Date
Dim Db As Double
Dim It As Integer
Dim Lg As Long
Dim Sh As Short
Dim Sg As Single
Dim St As String
Bo = True
By = 200
Ch = "a"
Dt = "15.12.2007"
Db = 1 / 7
It = 2000000000
Lg = 3000000000
Sh = 30000
Sg = 1 / 7
St = "Zeichenkette"
lblAnzeige.Text = _
"Boolean: " & Bo & vbCrLf & _
"Byte: " & By & vbCrLf & _
"Char: " & Ch & vbCrLf & _
"Double: " & Db & vbCrLf & _
"Date: " & Dt & vbCrLf & _
"Integer: " & It & vbCrLf & _
"Long: " & Lg & vbCrLf & _
"Short: " & Sh & vbCrLf & _
"Single: " & Sg & vbCrLf & _
"String: " & St
End Sub
End ClassDas Programm hat nach Betätigung des Buttons die folgende Ausgabe:
Abbildung 2.1 Wichtige Datentypen
Zur Erläuterung:
- Variablen werden mit Dim ... As ... deklariert.
- Bei den Zahlen-Datentypen führt eine Über- oder Unterschreitung des Wertebereichs zu einer Fehlermeldung.
Wertebereich
- Die Datentypen Single und Double für Zahlen mit Nachkommastellen unterscheiden sich in ihrer Genauigkeit.
Genauigkeit
- Werte für Zeichen, Zeichenketten und Datumsvariablen müssen in doppelten Anführungszeichen angegeben werden.
Mehrere Variablen des gleichen Typs können, durch Kommata getrennt, in einer Zeile deklariert werden (z. B. Dim x, y As Integer).
Übung p0202:
Schreiben Sie ein Programm, in dem Ihr Nachname, Vorname, Ihre Adresse, Ihr Geburtsdatum und Ihr Alter jeweils in Variablen eines geeigneten Datentyps gespeichert und anschließend wie folgt ausgegeben werden:
Abbildung 2.2 Übung p0202
2.1.4 Gültigkeitsbereich 

Lokal
Variablen, die innerhalb einer Prozedur vereinbart wurden, haben ihre Gültigkeit nur in der Prozedur. Außerhalb der Prozedur sind sowohl Name als auch Wert unbekannt. Solche Variablen bezeichnet man auch als lokale Variablen. Sobald die Prozedur abgearbeitet wurde, steht der Wert auch nicht mehr zur Verfügung. Beim nächsten Aufruf der gleichen Prozedur werden diese Variablen neu deklariert und erhalten neue Werte.
Statisch
Anders verhält es sich mit statischen Variablen. Diese behalten ihren Wert, solange das Programm läuft. Ein wiederholter Aufruf der gleichen Prozedur kann auf den letzten gespeicherten Wert einer Variablen zugreifen. Eine statische Variable vereinbart man z. B. wie folgt: Static Sx As Integer.
Modulweit
Variablen, die außerhalb von Prozeduren vereinbart werden, sind modulweit gültig. Ihr Wert kann in jeder Prozedur gesetzt oder abgerufen werden und bleibt innerhalb des Moduls auch erhalten. Eine solche Variable vereinbart man wie eine lokale Variable, nur an anderer Stelle, z. B. wie folgt: Dim Mx As Integer.
Gibt es mehrere Variablen mit dem gleichen Namen, gelten folgende Regeln:
- Lokale Variablen mit gleichem Namen in der gleichen Prozedur sind nicht zulässig.
- Eine modulweite Variable wird innerhalb einer Prozedur von einer lokalen Variablen mit dem gleichen Namen ausgeblendet.
Ausblenden
- Eine anwendungsweite Variable wird innerhalb eines Moduls von einer modulweiten oder lokalen Variablen mit dem gleichen Namen ausgeblendet.
Im folgenden Beispiel werden lokale, statische und modulweite Variablen deklariert, in verschiedenen Prozeduren erhöht und ausgegeben (p0203).
Public Class frm0203
Dim Mx As Integer
Private Sub cmdAnzeigen1_Click( ... ) Handles ...
Static Sx As Integer
Dim x As Integer
Sx = Sx + 1
Mx = Mx + 1
x = x + 1
lblAnzeige.Text = "Sx: " & Sx _
& " x: " & x & " MX: " & Mx
End Sub
Private Sub cmdAnzeigen2_Click( ... ) Handles ...
Dim Mx As Integer
Mx = Mx + 1
lblAnzeige.Text = "MX: " & Mx
End Sub
End ClassAbbildung 2.3 Statische und modulweite Variable
In der ersten Prozedur wird der Wert der statischen Variablen Sx und der modulweiten Variablen Mx bei jedem Aufruf erhöht. Die lokale Variable x wird immer wieder auf 1 gesetzt.
Abbildung 2.4 Lokale Variable
In der zweiten Prozedur blendet die lokale Variable Mx die gleichnamige modulweite Variable aus. Die lokale Variable wird immer wieder auf 1 gesetzt.
2.1.5 Konstanten 

Konstanten repräsentieren Werte
Konstanten sind vordefinierte Werte, die während der Laufzeit nicht verändert werden können. Man gibt Konstanten im Allgemeinen aussagekräftige Namen, dadurch sind sie leichter zu behalten als die Werte, die sie repräsentieren. Konstanten werden an einer zentralen Stelle definiert und können an verschiedenen Stellen des Programms genutzt werden. Somit muss eine eventuelle Änderung einer Konstanten zur Entwurfszeit nur an einer Stelle erfolgen. Der Gültigkeitsbereich von Konstanten ist analog zum Gültigkeitsbereich von Variablen.
Integrierte Konstanten
Zu den Konstanten zählen auch die integrierten Konstanten, wie z. B. vbCrLf. Auch sie repräsentieren Zahlen, die aber nicht so einprägsam sind wie die Namen der Konstanten.
Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt (p0204).
Public Class frm0204
Const MaxWert = 75
Const Eintrag = "Picture"
Private Sub cmdKonstanten_Click( ... ) Handles ...
Const MaxWert = 55
Const MinWert = 5
lblAnzeige.Text = (MaxWert - MinWert) / 2 & _
vbCrLf & Eintrag
End Sub
End ClassZur Erläuterung:
- Die Konstanten MaxWert und Eintrag werden modulweit festgelegt.
- Innerhalb der Prozedur werden die beiden lokalen Konstanten MaxWert und MinWert festgelegt. MaxWert blendet die modulweite Konstante gleichen Namens aus, wie man an der Ausgabe im Label ersehen kann.
- Außerdem kommt noch die integrierte Konstante vbCrLf zum Einsatz.
Abbildung 2.5 Konstanten
2.1.6 Enumerationen 

Konstanten aufzählen
Enumerationen sind Aufzählungen von Konstanten, die thematisch zusammengehören. Alle Enumerationen haben den gleichen Datentyp, der ganzzahlig sein muss. Bei der Deklaration werden ihnen Werte zugewiesen, am besten explizit.
Innerhalb von Visual Basic gibt es zahlreiche vordefinierte Enumerationen. Ähnlich wie bei den integrierten Konstanten sind die Namen der Enumerationen und deren Elemente besser lesbar als die durch sie repräsentierten Zahlen.
Ein Beispiel: Die Enumeration MsgBoxResult ermöglicht es dem Programmierer, die zahlreichen möglichen Antworten des Benutzers beim Einsatz von Windows-Standard-Dialogfeldern (Ja, Nein, Abbrechen, Wiederholen, Ignorieren, ...) anschaulich einzusetzen.
Im folgenden Programm wird mit einer eigenen und einer vordefinierten Enumeration gearbeitet (ebenfalls in p0204).
Public Class frm0204
[ ... ]
Enum Zahl As Integer
Eins = 1
Zwei = 2
Drei = 3
Vier = 4
End Enum
[ ... ]
Private Sub cmdEnumeration1_Click( ... ) Handles ...
lblAnzeige.Text = Zahl.Zwei * Zahl.Drei
End Sub
Private Sub cmdEnumeration2_Click( ... ) Handles ...
lblAnzeige.Text = "Montag: " _
& FirstDayOfWeek.Sunday & _
", Samstag: " & FirstDayOfWeek.Saturday
End Sub
End ClassZur Erläuterung:
- Es wird die Enumeration Zahl vom Datentyp Integer vereinbart. Da es sich um einen Typ handelt und nicht um eine Variable oder Konstante, muss sie außerhalb von Prozeduren vereinbart werden. Damit ist sie automatisch modulweit gültig
- In der ersten Ereignisprozedur werden zwei Elemente der eigenen Enumeration Zahl verwendet. Die beiden Zahlen, die sie repräsentieren, werden miteinander multipliziert.
- In der zweiten Ereignisprozedur werden zwei Elemente der vordefinierten Enumeration FirstDayOfWeek verwendet.
Abbildung 2.6 Erste Enumeration
Abbildung 2.7 Zweite Enumeration
Übung p0205:
Erstellen Sie ein Programm, in dem zwei Buttons, ein Label und drei Variablen eines geeigneten Datentyps eingesetzt werden:
- die modulweite Variable x
- die Variable y, die nur lokal in der Prozedur zum Click-Ereignis des ersten Buttons gültig ist
- die Variable z, die nur lokal in der Prozedur zum Click-Ereignis des zweiten Buttons gültig ist
- In der ersten Prozedur werden x und y jeweils um 0,1 erhöht und angezeigt.
- In der zweiten Prozedur werden x und z jeweils um 0,1 erhöht und angezeigt.
Abbildung 2.8 Ausgabe der ersten Prozedur nach einigen Klicks
Abbildung 2.9 Ausgabe der zweiten Prozedur nach weiteren Klicks



Jetzt online bestellen














