Das Wort zum Sonntag
09.03.2008 20:08:00
Nepumuk
heute mal zum Thema Stringoperationen. Jeder kennt so etwas (jaja ich weiß, ist'n blödes Beispiel):
Public Sub test()
Dim strTestString As String
strTestString = LCase(Mid("ABC", 1, 1))
Debug.Print strTestString
End Sub
Dim strTestString As String
strTestString = LCase(Mid("ABC", 1, 1))
Debug.Print strTestString
End Sub
Aber die wenigsten wissen, dass es von diesen Funktionen zwei Varianten gibt. Nämlich eine mit und eine ohne $ - Zeichen nach der Funktion. Also Mid und Mid$, Left und Left$, Ucase und Ucase$ um einige zu nennen. Finden könnt ihr sie alle im Objektkatalog wenn ihr ein $ - Zeichen als Suchbegriff eingebt.
Wo ist nun der Unterschied? Denn in der Variable steht, wenn wir das Beispiel benutzen ein kleines "a", egal ob mit oder ohne $ - Zeichen an den Funktionen. VB hat uns in diesem Fall den Rückgabewert der Funktion in einen String konvertiert, damit er in die Variable passt. Denn die String-Funktionen ohne $ - Zeichen liefern uns einen Variant zurück der, um ihn in die Variable zu packen, erst mal zu einem String konvertiert werden muss. Hätten wir an Stelle von Mid und LCase Mid$ und LCase$ benutzt, hätten wir einen String zurückbekommen, der nicht konvertiert werden muss. Das ganze ist damit gut 30% schneller, denn 1. muss nichts konvertiert werden und 2. benötigt ein String 10 Byte + 1 Byte für jedes Zeichen, ein Variant aber 22 Byte + 1 Byte für jedes Zeichen.
Also, in Zukunft immer da, wo sowieso ein String als Rückgabewert erwartet wird, auch die entsprechende Funktion benutzen.
Gruß
Nepumuk