vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück
Rubrik: Controls · TextBox & RichTextBox   |   VB-Versionen: VB610.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 KuklauBewertung:     [ Jetzt bewerten ]Views:  18.919 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 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!
 

Dieser Tipp wurde bereits 18.919 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!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.
 
   

Druckansicht Druckansicht Copyright ©2000-2019 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel