Übersicht
0004 Leer-String oder Null-String?
![]() |
Was ist eigentlich der Unterschied zwischen
einem leeren String (myString = "") und einem Nullstring (myString
= vbNullString)? Nun - einfach gesagt erst einmal 6 Byte! Denn
genau die werden durch myString = "" im Speicher
belegt, wohingegen die Konstantenzuweisung myString =
vbNullString den String im Speicher tatsächlich löscht.
Vielleicht kennen Sie das aus der C-Programmierung ('\0').
Abgesehen von der Speicherbelegung kann VB diese Zuweisung auch
schneller verarbeiten. Wenn Sie viel mit solchen Stringausdrücken
in Ihrer Anwendung arbeiten, kann sich das durchaus bemerkbar
machen. Am Besten gewöhnen Sie sich die vbNullString-Variante
generell an, einen Unterschied im Programmhandling gibt es
eigentlich nicht - einzige Ausnahme: einige wenige nicht
VB-konforme API-Aufrufe unterstützen den NullString nicht! Sollte
es also bei der Übergabe an solche Funktionen einmal zu einem
Absturz kommen, so versuchen Sie es mit "" - aber bitte nur dann...
|
|
Autor: ralf schlegel |
0003 Speed it up mit $
![]() |
Standard Stringfunktionen, wie Mid$,
Left$ und Right$ lassen sich heute auch ohne das
Dollar-Zeichen im Quelltext eingeben. Das sieht vielleicht schöner
aus, ist aber langsamer: die Funktion Left$("C:\Windows", 2)
liefert einen Rückgabewert vom Typ String während
Left("C:\Windows", 2) den speicherfressenden Typ
Variant zurückgibt, der bei Zuweisung auf eine
String-Variabel erst wieder konvertiert werden muß. Das kostet
unnötig Zeit und Speicherplatz - erst recht, wenn Funktionen
wie Mid(...) in Schleifen benutzt werden.
Hier eine Auflistung aller VB-Funktionen die
mit $ genutzt werden sollten:
Erweiterung von Rudolf Wahlbrinck (11/2009): Bei den internen Konstanten gibt es auch die allgemeine (Variant) und die String-Version, also: vbCrLf$, vbCr$, vbLf$, vbNewLine$, vbTab$, vbBack$, vbFormFeed$ |
|
Autor: ralf schlegel |
0002 Immer ein gültiger String
![]() |
Die folgende simple Funktion gibt immer einen
"sicheren" String zurück und verhindert so Laufzeitfehler bei zum Beispiel
noch nicht initialisierten Datenbankfeldern und leeren Variablen aus
API-Rückgaben:
'
Funktion: Public Function asString(ByVals As Variant) As String OnLocal Error Resume Next IfIsNull(s) OrIsEmpty(s) Then asString = "" Else asString = RTrim$(CStr(s)) End If End Function ' Aufrufbeispiel: myString = asString(Data1.Recordset!FeldName) |
|
Autor: ralf schlegel |
0001 Deklarieren - aber richtig!
![]() |
Ja, ja - ein altes Thema! Und dennoch: es gibt immer
noch genügend Leute, die die Syntax der Variabeln-Deklaration nicht
richtig verstanden haben:
Beispiel: es sollen 3 Variabeln vom
Typ String deklariert werden.
Richtig: Dim a as String, b as String, c as String
Falsch: Dim a, b, c as String
In der Falsch-Variante werden die Variabeln a
und b nicht als String-Werte sondern als Variant im Speicher
angelegt. Die Anweisung Option Explicit am Anfang eines Moduls hilft da
auch nicht weiter. Dadurch wird lediglich sichergestellt, dass die
Variabeln deklariert sein müssen; eine Typenprüfung bei deren Benutzung
findet aber nicht statt! |
|
Autor: ralf schlegel |


