Rubrik: Controls · TextBox & RichTextBox | VB-Versionen: VB6 | 10.11.03 |
Intelligente TextBox für IP-Adressen Dieser Tipp stellt eine Funktion zur formellen Prüfung von IP-Adressen zur Verfügung. | ||
Autor: Gerhard Kuklau | Bewertung: | Views: 20.664 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
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!