ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 21.11.2001

Diese Seite wurde zuletzt aktualisiert am 21.11.2001
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Gültige Zeichenmenge

Zurück...


Anzeige

(-hg) mailto:hg_validchars@aboutvb.de

Wie würden Sie prüfen, ob ein gegebener String ausschließlich aus einem gegebenen Satz bestimmter Zeichen besteht? Eine der gängigsten Lösungen prüft der Reihe nach per InStr für jedes Zeichen des Strings, ob es sich in der gegebenen Zeichenmenge befindet:

Public Function HasValidChars(Text As String, CharList As String) _
 As Boolean

  Dim l As Long
  
  For l = 1 To Len(Text)
    If InStr(CharList, Mid$(Text, l, 1)) = 0 Then
      Exit Function
    End If
  Next 'l
  HasValidChars = True
End Function

Auch wenn Visual Basic selbst keine echte Validierung so genannter "regulärer Ausdrücke" bietet, so ermöglicht der Like-Operator doch immerhin eine ganze Menge ähnlicher Vergleiche. So können Sie von ihm auch die gewünschte Prüfung vornehmen lassen. Sie sieht zwar wegen der doppelten Umkehrung etwas verquer aus, erfüllt aber genau ihren Zweck. Bei der Zusammenstellung der zulässigen Zeichenmenge (CharList) gelten die Regeln, über die Sie in der VB-Hilfe zum Like-Operator mehr erfahren.

Public Function LikeValidChars(Text As String, CharList As String) _
 As Boolean

  LikeChars = Not Text Like "*[!" & CharList & "]*"
End Function

Die Geschwindigkeit der Prüfung über den Like-Operator ist relativ konstant - die Länge des zu prüfenden Textes spielt nur eine unwesentliche Rolle. Sie werden sicher leicht nachvollziehen können, dass dagegen die Prüfungsdauer bei der Eingangs vorgestellten Prüfung über InStr linear mit der Länge des zu prüfenden Textes wächst.

Im Normalfall hat die Like-Variante in der oben vorgestellten Form noch einen kleinen Nachteil: Sie müssten sowohl Klein- als auch Großbuchstaben in die Zeichenmenge aufnehmen, wenn beide erlaubt sein sollen. "Normalfall" heißt, dass die Standard-Vergleichsmethode (der binäre Vergleich) nicht durch eine explizite Einstellung in dem Modul, in dem die Like-Operation stattfindet, geändert worden ist - etwa durch ein "Option Compare Text" im Modul-Kopf.

Mittels dieser Einstellung können Sie jedoch auch ganz bewusst dafür sorgen, dass Groß- und Kleinbuchstaben gleichermaßen gültig sein sollen. Um die Kontrolle vollkommen in der Hand zu behalten und dynamisch zwischen binärer und textueller Vergleichsmethode wählen zu können, verwenden Sie am besten mehrere Standard-Module. In einem Standard-Modul, in dem die Voreinstellung der Vergleichsmethode unverändert bleibt, befindet sich die Variante der Funktion, die für den stringenten binären Vergleich zuständig sein soll:

Public Function ValidCharsBin(Text As String, CharList As String) _
 As Boolean

  ValidCharsBin = Not Text Like "*[!" & CharList & "]*"
End Function

In einem zweiten Standard-Modul befindet sich die Variante für den textuellen Vergleich. Hier wird die Vergleichsmethode explizit auf "Text" gestellt:

Option Compare Text

Public Function ValidCharsText(Text As String, CharList As String) _
 As Boolean

  ValidCharsText = Not Text Like "*[!" & CharList & "]*"
End Function

Diese beiden Varianten können Sie nun gezielt aufrufen. Nun können Sie noch, etwa in einem dritten Standard-Modul, eine allgemeine Aufrufvariante anlegen, bei der über einen (optionalen) Parameter die Vergleichsmethode festgelegt werden kann:

Public Enum vchCompareMethodConstants
  vchBinaryCompare
  vchTextCompare
End Enum

Public Function ValidChars(Text As String, CharList As String, _
 Optional ByVal CompareMethod As vchCompareMethodConstants _
 = vchBinaryCompare)

  If CompareMethod = vchTextCompare Then
    ValidChars = ValidCharsText(Text, CharList)
  Else
    ValidChars = ValidCharsBin(Text, CharList)
  End If
End Function

Modul(e) modValidChars... (validchars.zip - ca. 1,3 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche




Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer