Sonstige Funktionen
Unfreiwillige Datentyp-Konvertierung
Visual Basic wandelt Variablen automatisch in andere Datentypen um, wenn diese nicht zueinander passen. Das ist aber durchaus kein Vorteil, sondern sorgt für überraschenden Ärger.
Leider (anders kann man das nicht sagen) kümmert sich Visual Basic wenig bis gar nicht um korrekte Datentypen, so dass Sie also Datentyp-Verletzung nicht als Laufzeit- oder besser sogar schon als Kompilier-Fehler gemeldet bekommen. Anweisungen wie im folgenden Code sind nämlich eigentlich unzulässig:
Sub FalscherDatentyp()
Dim intZahl As Integer
Dim datDatum As Date
intZahl = "123" 'pfui!
datDatum = "24.12/2011" 'pfui!
MsgBox intZahl & vbCrLf & datDatum
End SubObwohl Sie der Integer-Variablen eine Zeichenkette zuweisen und der Date-Variablen eine sogar eher merkwürdige Zeichenkette, stoppt nicht schon der Compiler, sondern der Code wird ausgeführt.
Bis dahin noch mag das Argument ja lauten, diese automatische Datentyp-Konvertierung sei doch sehr praktisch. Das wird sich ändern, wenn Ihnen folgendes passiert:
Dim strText As String
Sub DatenTypKorrekt()
strText = "123" & "456"
MsgBox strText
End Sub
Sub DatenTypMutig()
strText = "123" + "456"
MsgBox strText
End Sub
Sub DatenTypPech()
strText = "123" + 456
MsgBox strText
End SubIn DatenTypKorrekt werden zwei Zeichenketten miteinander verkettet und es gibt das gewünschte Ergebnis "123456" als Zeichenkette. In DatenTypMutig ist statt des richtigen Verkettungsoperators & fälschlicherweise der Additionsoperator + eingesetzt, was meistens funktioniert. Aber eben nur meistens!
Wer nun versehentlich auch noch die Anführungszeichen weglässt, findet als überraschendes Ergebnis nicht mehr "123456", sondern "579"! Die erste Zeichenkette wurde klammheimlich in eine Zahl umgewandelt, beide Zahlen addiert und das Ergebnis wieder in String konvertiert.
Diese Seite ist für Mitglieder von akademie.de reserviert.
Möchten Sie die Mitgliedschaft 14 Tage kostenlos testen und den Beitrag komplett lesen?
Oder möchten Sie zunächst mehr über diesen Beitrag erfahren und die Leseproben sehen?
Ich bin bereits Mitglied