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.683 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. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung sevAniGif (VB/VBA) Anzeigen von animierten GIF-Dateien Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. |
||||||||||||||||
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. |