Mittwoch, 11. Dezember 2013

TM-SmartString: Length, Contains

Mit diesem Beitrag wird das Klassenmodul TM-SmartString um zwei weitere nützliche Eigenschaften erweitert: Length und Contains.

Eigenschaft: Length
Diese Eigenschaft gibt die Länge des enthaltenen Textes zurück.

Implementierung
Die Implementierung erfolgt mit folgendem Code:
1:  Public Property Get Length() As Long  
2:    Length = VBA.Len(m_String)  
3:  End Property  
In der zweiten Zeile wird die Funktion Len verwendet, um das Ergebnis zu ermitteln. Der Name der Funktion Len wird zusätzlich mit dem Namen der zu verwendenden Bibliothek qualifiziert; in diesem Fall "VBA". So wird sichergestellt, dass die Funktion Len aus der Bibliothek VBA verwendet wird.

Ich hätte mich gern am Original orientiert und die Eigenschaft "Len" genannt. Leider war dies nicht möglich. Bei der Verwendung von "Len" als Name einer Property lässt sich der Code nicht kompilieren.

Bisheriger Code
Bisher wurde die Länge eines Strings wie folgt ermittelt:
1:  Dim myString As String  
2:  myString = "Hello World"  
3:  MsgBox Len(myString)  
In der dritten Zeile wird die Länge des Strings mit der Funktion Len ermittelt.

Künftiger Code
Bei Verwendung der Klasse TM_SmartString sieht der Code wie folgt aus:
1:  Dim myString As TM_SmartString  
2:  Set myString = New TM_SmartString  
3:  myString = "Hello World"  
4:  MsgBox myString.Length  
In der vierten Zeile wird die Eigenschaft Length abgerufen.

Eigenschaft: Contains
Diese Methode prüft, ob der enthaltene Text eine bestimmte Zeichenfolge beinhaltet.

Implementierung
Die Implementierung erfolgt mit folgendem Code:
1:  Public Property Get Contains(ByVal What As String) As Boolean  
2:    If (VBA.InStr(m_String, What)) > 0 Then  
3:      Contains = True  
4:    Else  
5:      Contains = False  
6:    End If  
7:  End Property  
In der zweiten Zeile wird mit der Funktion Instr ermittelt, ob der gesuchte String im Text der Klasse enthalten ist. Der Name der Funktion Instr wird zusätzlich mit dem Namen der zu verwendenden Bibliothek qualifiziert; in diesem Fall "VBA". So wird sichergestellt, dass die Funktion Instr aus der Bibliothek VBA verwendet wird.

Bisheriger Code
Bisher erfolgte die Prüfung, ob ein String einen bestimmten Text enthält, z.B. wie folgt:
1:  Dim myString As String  
2:  myString = "Hello World"  
3:  If (InStr(myString, "o W")) > 0 Then  
4:    MsgBox "Ja"  
5:  End If  
In der dritten Zeile wird mit der Funktion Instr die Position des gesuchten Textes ermittelt. Wenn das Ergebnis größer 0 ist, ist der Text vorhanden.

Künftiger Code
Bei Verwendung der Klasse TM_SmartString sieht der Code wie folgt aus:
1:  Dim myString As TM_SmartString  
2:  Set myString = New TM_SmartString  
3:  myString = "Hello World"  
4:  If (myString.Contains("o W")) Then  
5:    MsgBox "Ja"  
6:  End If  
In der vierten Zeile wird die Eigenschaft Contains aufgerufen. Als Parameter wird der gesuchte Text übergeben.
Dieser Code ist leichter zu verstehen. Das Ergebnis muss nicht weiter interpretiert werden.


Mit der Implementierung der Eigenschaften Length und Contains werden erneut die Vorteile einer eigenen Klasse sichtbar: der entstehende Code ist wesentlich leichter lesbar. Die notwendige Logik wird in das Klassenmodul verlegt. Dort kann es zentral gepflegt werden.

Die neue Version 1.13.02 steht (wie immer) auf meiner Webseite zum Download bereit.

Keine Kommentare: