vb-Zentrum
Strings & More
http://www.vb-zentrum.de/tip_strings.html

© 2010 vb-Zentrum

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
Stand: 03/2006

Nach oben

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:
  • Left$, Right$, Mid$
  • Trim$, LTrim$, RTrim$
  • Chr$, ChrW$, Str$, Hex$, Oct$
  • LCase$, UCase$, Format$
  • Space$, String$, Error$

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
Stand: 02/2006

Nach oben

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
Stand: 02/2006

Nach oben

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
Stand: 09/2004

Nach oben