Wer mit IP-Adressen programmtechnisch zu tun hat, stellt sich immer wieder die Frage, wie die Richtigkeit überprüft werden kann bzw. der Anwender daran gehindert eine formal falsche Eingabe zu tätigen. Genau hier setzt die Intelligente TextBox für IP-Adressen an. Im Modul modIPNumCheck.bas sind zwei Functions enthalten, die uns dabei unterstützen. Zunächst einmal brauchen wir ein neues Projekt, ein neues Modul (Name: modIPNumCheck) und eine Form mit einer TextBox (txtIPAddress). Im KeyPress-Event der TextBox werden die Functions fCheckIPNumericKey und fCheckIP wie folgt aufgerufen: Private Sub txtIPAddress_KeyPress(KeyAscii As Integer) ' beim Drücken einer Taste wird die Gültigkeit geprüft, ' und nur der Wert "durchgelassen", der auch für die ' Erstellung einer IP-Adresse gültig ist: fCheckIPNumericKey KeyAscii If KeyAscii = 13 Then KeyAscii = 0 With txtIPAddress If fCheckIP(.Text) = False Then .SelStart = 0 .SelLength = Len(.Text) Else MsgBox "IP-Adresse=" & .Text & " ist in Ordnung!", _ vbInformation, "IP-Check" End If End With End If End Sub Im Modul (modIPNumCheck.bas) speichern Sie bitte folgenden Code: Option Explicit ' -------------------------------------------------------- ' modIPNumCheck ' ============= ' Das Modul enthält zwei Funktionen, die der Überprüfung ' von IP-Adressen (gültige Eingabe) dienen. ' ' - fCheckIPNumericKey ' diese Function wird im Event KeyPress der TextBox ' aufgerufen und läßt nur die für IP-Adressen ' gültigen Werte zu. ' ' - fCheckIP ' diese Function überprüft den übergebenen String auf ' formale Richtigkeit von IP-Adressen (incl. Werte!) ' ' Version: 1.0 ' ' (c) 2003, Gerhard Kuklau ' -------------------------------------------------------- Public Sub fCheckIPNumericKey(KeyAscii As Integer) ' Function zum Numeric-Check von IP-Adressen und SubNetMask's: ' ============================================================ ' Eine spezielle Function zur Numeric-Prüfung für IP-Adressen ' und SubNetMask's. ' Es werden nur positive Zahlenwerte und der Punkt zugelassen. ' Als Komfort wird das Komma in einen Punkt konvertiert. Select Case KeyAscii Case 48 To 57, 8, 13 ' Zahlen, Backspace und Return Case 46, 44 ' Aus Komma wird autom. Punkt If KeyAscii = 44 Then KeyAscii = 46 Case Else ' alle anderen Zeichen ignorieren KeyAscii = 0 End Select End Sub Public Function fCheckIP(sIP As String) As Boolean ' Function zum Checken der IP-Adresse: ' ==================================== ' Die Ip-Adresse wird als ganzes, also kpl. geprüft ' Sie wird in ihre einzelnen Octetts zerlegt und jedes ' einzeln geprüft und ggf. korrigiert (s.u. führende Nullen). ' Führende Nullen in IP-Adressen sind nicht erlaubt! ' Aus diesem Grund werden sie von der Function entfernt. ' Wenn eine Unstimmigkeit auftritt, wird die Function ' abgebrochen und False zurückgegeben ' Bei bestandener Prüfung gibt die Function True zurück Dim sOctett() As String Dim nZahl As Long Dim i As Long ' IP ist formal falsch: ' ===================== sOctett = Split(sIP, ".", -1, vbTextCompare) If UBound(sOctett) <> 3 Then fCheckIP = False Exit Function End If For i = 0 To UBound(sOctett) ' die Ip-Adresse wird in ihre Bestandteile (Octetts) zerlegt: ' =========================================================== nZahl = CInt(sOctett(i)) Select Case i Case 0: ' 1. Octett Select Case nZahl Case 10 To 255: ' Wert im erlaubten Bereich sOctett(i) = CStr(nZahl) Case Else: ' Wert ungültig fCheckIP = False Exit Function End Select Case 1, 2: ' 2. + 3. Octett Select Case nZahl Case 0 To 255: ' Wert im erlaubten Bereich sOctett(i) = CStr(nZahl) Case Else: ' Wert ungültig fCheckIP = False Exit Function End Select Case 3: ' 4. Octett Select Case nZahl Case 1 To 255: ' Wert im erlaubten Bereich sOctett(i) = CStr(nZahl) Case Else: ' Wert ungültig fCheckIP = False Exit Function End Select Case Else: ' die IP ist formal falsch fCheckIP = False Exit Function End Select Next i ' jetzt nur noch die IP wieder richtig zusammen bauen und fertig: ' =============================================================== sIP = Join(sOctett, ".") fCheckIP = True End Function Die Funktion fCheckIP eignet sich nicht nur in Verbindung mit der Eingabe einer IP-Adresse, sondern auch um eine vorhandene IP-Adresse formell zu prüfen! Dieser Tipp wurde bereits 20.663 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevWizard für VB5/6 Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |