|
Wirklich praktisch ist die Möglichkeit bei vielen Visual
Basic-Funktionen, die Vergleichsmethode bei String-Vergleichen
ausdrücklich anzugeben. So können Sie bei den Funktionen Filter,
InStr,
InStrRev,
Replace,
Split
und StrComp
entscheiden, ob die Groß-/Kleinschreibung
berücksichtigt werden soll (Vergleichsmethode vbTextCompare), oder
ob die Übereinstimmung exakt sein soll (Vergleichsmethode
vbBinaryCompare). Als Voreinstellung gilt jeweils die für das
Modul, in der eine dieser Funktionen verwendet wird, über die
Anweisung Option
Compare festgelegte Einstellung. Fehlt diese
ausdrückliche Einstellung, gilt für ein Modul die Einstellung
Option Compare Binary. Mit der ausdrücklichen Angabe der
Vergleichsmethode beim Aufruf einer der oben stehenden Funktionen
setzen Sie die Voreinstellung außer Kraft.
Die Option Compare-Einstellung gilt auch für den Operator Like.
Doch anders als bei den besagten Funktionen können Sie die
Voreinstellung nicht ausdrücklich angeben und damit die
Voreinstellung gegebenenfalls außer Kraft setzen. Sie sind bei der
Verwendung des Like-Operators auf Gedeih und Verderb der
Voreinstellung ausgeliefert. Es sei denn...
Es ist zwar im Verhältnis zum gewünschten Nutzen ein großer
Aufwand, doch anscheinend die einzige Lösung: Sie brauchen je ein
Mini-Modul mit den Voreinstellungen Option Compare Binary
und Option Compare Text, in denen Sie Ersatz-Funktionen
für den Like-Operator deponieren:
Option Compare Binary
Public Function LikeCompBinary(Str As String, Pattern As String) _
As Boolean
LikeCompBinary = CBool(Str Like Pattern)
End Function
und
Option Compare Text
Public Function LikeCompText(Str As String, Pattern As String) _
As Boolean
LikeCompText = CBool(Str Like Pattern)
End Function
Nun treiben wir den Komfort samt Aufwand noch ein wenig weiter
und deponieren in einem dritten Modul zusätzlich eine allgemeiner
aussehende und verwendbare Funktion nach dem Muster der übrigen
Funktionen mit Wahl der Vergleichsmethode:
Public Function LikeComp(Str As String, Pattern As String, _
Optional ByVal CompareMethod As VbCompareMethod = vbBinaryCompare) _
As Boolean
Select Case CompareMethod
Case vbBinaryCompare
LikeComp = LikeCompBinary(Str, Pattern)
Case vbTextCompare
LikeComp = LikeCompText(Str, Pattern)
End Select
End Function
Diese Funktion brauchen Sie nicht unbedingt, wenn Sie beim Aufruf
einer der beiden voreingestellten Varianten bereits eindeutig
wissen, welche von beiden Sie benötigen. Ergibt sich die Wahl der
Vergleichsmethode jedoch erst während des Programmablaufs, ist die
Variante mit dynamischer Wahl der Vergleichsmethode ganz praktisch.
|