Datentypen und Variablendeklaration

Übersicht der Datentypen | Deklaration | Arrays
Benutzerdefinierter Datentyp | Dynamische Feldvariable

Übersicht der Datentypen

Datentyp
Zeichen
BytesWertebereich
Boolean 20 (False) und -1 (True)
Byte 10 bis 255
Integer
%
2-32.768 bis 32.767
Long
&
4-2.147.483.648 bis 2.147.483.647
Single
!
4-3,402823 E 38 bis -1,401298 E -45 und 1,401298 E -45 bis 3,402823 E 38
Double
#
8-1,79769313486232 E 308 bis -4,94065645841247 E -324 und 4,94065645841247 E -324 bis 1,79769313486232 E 308
Decimal 1228 Ziffernstellen
Currency
@
8-922.337.203.685.477,5808 bis 922.337.203.685.477,5807
Date 81.1.100 bis 31.12.9999
String
(variable Länge)
$
10 + Länge der Zeichenkette0 bis ca. 2 Milliarden
String
(feste Länge)
$
Länge der Zeichenketteca. 65.400
Variant 16Jeder Wert im Bereich wie Double
Variant 
(mit Zeichenkette)
 22 + Länge der Zeichenkette 
Object 4Referenz auf Objekt
zum Anfang

Deklaration von Variablen

Variable sollten vor ihrer Verwendung deklariert werden. Wenn man ohne Variablendeklaration arbeitet, werden abweichend geschriebene Variable mit dem Wert "0" benutzt, was zu schwer aufzufindenden Fehlrechnungen führen kann.
Wenn der Codebereich mit "Option Explicit" beginnt, müssen Variable deklariert werden. Die Deklaration reserviert Speicherplatz für die Variable. Wenn Variable deklariert sind, werden Schreibfehler bei Variablennamen leicht erkannt und gemeldet. Zur Variablendeklaration gibt es mehrere Möglichkeiten, nicht alle seien hier angegeben:

zum Anfang

Deklaration von Arrays

Arrays oder Felder von Variablen werden wie folgt deklariert:
Dim FeldVariablenName [([[untereGrenze to] obereGrenze][,[untereGrenze to] obereGrenze]...][As [New] Datentyp]
Notwendige Anmerkungen:

zum Anfang

Benutzerdefinierter Datentyp

für Spezialisten. Außer den vorhandenen Datentypen kann ein komplexer Datentyp (in Pascal "Record") vereinbart werden:

Vereinbarung

BeschreibungBeispiel
Typdeklaration:
Type Name
Variable 1 As Variablentyp
Variable 2 As Variablentyp
...
End Type

Type Person
Vorname As String
Nachname As String
Geburtstag As Date
End Type
Variablendeklaration:
Dim Variablenname As Name

Dim Mitglied As Person

Verwendung

Ein normaler Zugriff wäre die Zuweisung 'Mitglied.Nachname = "Müller"'. Bei Verwendung einer With-Schleife könnte jeweils der Objektname "Mitglied" wegbleiben, die Zuweisung reduziert sich dann auf '.Nachname = "Müller"'. Die benutzerdefinierte Variable "Mitglied" gilt innerhalb der With-Schleife als vorgewählt.
Benutzerdefinierte Datentypen sind besonders bei Datenbankanwendungen nützlich.

zum Anfang

Dynamische Feldvariable

Es gibt in Visual Basic die Möglichkeit, für Feldvariable den verwendbaren Platz nachträglich zu vergrößern bzw. ihn nach Erledigung ihrer Aufgabe auch wieder freizugeben. Man nennt sie dann eben "dynamisch".
Die Deklaration erfolgt diesmal in zwei Stufen:

1. Deklaration

mit Private-, Public- oder Dim-Anweisung. Die Argumentenliste bleibt leer.
Beispiel: Dim Werte(), Verbindungen().
Die Deklaration erfolgt für alle Arrays gleich, völlig unabhängig davon, wieviele Dimensionen sie haben sollen (erlaubt sind bis zu 60).

2. Dimensionierung

mit: ReDim [Preserve] VarName(Indizes) [As Typ].
Diese Dimensionierung kann wiederholt werden. Sie hat ohne das Schlüsselwort Preserve zur Folge, daß der Inhalt des gesamten Arrays gelöscht wird. Wenn es sich bei dem Array um mehr als einen Vektor handelt, erfährt der Rechner erst jetzt, wieviele Dimensionen es haben soll.
Die Anzahl der Dimensionen kann nachträglich nicht mehr verändert werden. Unter Erhaltung von Array-Inhalten, also bei ReDim Preserve VarName(...) kann nur noch die Größe der letzten Datenfelddimension verändert werden.
Aufrufbeispiel: ReDim Werte(250), Verbindungen(75,75,75)

3. Die Freigabe

des belegten Speicherplatzes erfolgt, indem ReDim mit einer Datenfeldgröße 0 aufgerufen wird.
Aufrufbeispiel: ReDim Werte(0), Verbindungen(0, 0, 0)

Ein Beispiel für die Verwendung dynamischer Feldvariabler bei Vektoren und Matrizen wird später anhand der Matrizeninversion gegeben.

zum Anfang

© R. Hirte * 2000