vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 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: VB625.05.04
Intelligente TextBox für IP-Adressen II

Erweiterung des Tipps "Intelligente TextBox für IP-Adressen" von Gerhard Kuklau

Autor:   Alexander FaustBewertung:     [ Jetzt bewerten ]Views:  15.504 
www.faustweb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Dieser Tipp beinhaltet eine Erweiterung des Tipps  Intelligente TextBox für IP-Adressen von Gerhard Kuklau

Erweiterungen/Änderungen von mir:

  • CheckIPAddress (NEU)
    Diese Funktion macht die Verwendung dieses Moduls einfacher, da im KeyPress-Event nur noch ein Aufruf nötig ist. Alles andere passiert in diesem Modul, so lässt sich das Modul einfacher weitergeben. Die ursprüngliche Funktion fCheckIPNumericKey wurde hier integriert.

QUELLCODE (Modul modIPNumCheck.bas):

Public Sub CheckIPAddress(tboIPAddress As TextBox, _
  intKeyAscii As Integer)
 
  ' Es werden nur positive Zahlenwerte und der Punkt
  ' zugelassen.
  ' Als Komfort wird das Komma in einen Punkt konvertiert.
  Select Case intKeyAscii
    ' Zahlen, Backspace und Return
    Case 48 To 57, 8, 13
 
    ' Aus Komma wird autom. Punkt
    Case 46, 44
      If intKeyAscii = 44 Then intKeyAscii = 46
 
    ' alle anderen Zeichen ignorieren
    Case Else
      intKeyAscii = 0
  End Select
 
  ' 13=CR  [ENTER]
  If intKeyAscii = 13 Then
    intKeyAscii = 0
 
    With tboIPAddress
      If fCheckIP(.Text, tboIPAddress) = False Then
        Beep
        On Error Resume Next
        .SetFocus
        .SelStart = 0
        .SelLength = Len(.Text)
        On Error GoTo 0
      Else
        MsgBox "IP-Adresse=" & .Text & " ist in Ordnung!", _
          vbInformation, "IP-Check"
      End If
    End With
  End If
End Sub

  • fCheckIP (GEÄNDERT)
    • Hier wurde eine Überprüfung der Länge der IP-Adresse hinzugefügt, um einen Überlauf bei Eingabe eines sehr langen Strings zu verhindern.
    • Die Funktion "Führende Nullen entfernen" wurde durch Übergabe der Textbox als Parameter funktionsfähig gemacht

QUELLCODE (Modul modIPNumCheck.bas):

Private Function fCheckIP(strIP As String, _
  tboIPAddress As TextBox) As Boolean
 
  ' Funktion 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 strOctett() As String
  Dim lngZahl As Long
  Dim intIndex As Integer
 
  ' IP überschreitet maximale Länge (15 Zeichen):
  ' ==============================================
  If Len(strIP) > 15 Then
    fCheckIP = False
    Exit Function
  End If
 
  ' IP enthält zu viele Octetts (mehr als 4):
  ' =========================================
  strOctett = Split(strIP, ".", -1, vbTextCompare)
  If UBound(strOctett) <> 3 Then
    fCheckIP = False
    Exit Function
  End If
 
  For intIndex = 0 To UBound(strOctett)
    ' die Ip-Adresse wird in ihre Bestandteile (Octetts) zerlegt:
    ' ===========================================================
 
    lngZahl = CLng(strOctett(intIndex))
    Select Case intIndex
      Case 0:     ' 1. Octett
        Select Case lngZahl
          Case 10 To 255:     ' Wert im erlaubten Bereich
            strOctett(intIndex) = CStr(lngZahl)
          Case Else:          ' Wert ungültig
            fCheckIP = False
            Exit Function
        End Select
 
      Case 1, 2:  ' 2. + 3. Octett
        Select Case lngZahl
          Case 0 To 255:      ' Wert im erlaubten Bereich
            strOctett(intIndex) = CStr(lngZahl)
          Case Else:          ' Wert ungültig
            fCheckIP = False
            Exit Function
        End Select
 
      Case 3:     ' 4. Octett
        Select Case lngZahl
          Case 1 To 255:     ' Wert im erlaubten Bereich
            strOctett(intIndex) = CStr(lngZahl)
          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 intIndex
 
  ' jetzt nur noch die IP wieder richtig zusammen bauen und fertig:
  ' ===============================================================
  strIP = Join(strOctett, ".")
  tboIPAddress.Text = strIP
  fCheckIP = True
End Function

  • Aufruf aus dem Key_Press-Event (GEÄNDERT)
    Der Aufruf erfolgt nun nur noch als Funktionsaufruf mit zwei Parametern, der verwendeten Textbox und des ASCII-Codes der gedrückten Taste.

QUELLCODE (Form1.frm):

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:
  CheckIPAddress txtIPAddress, KeyAscii
End Sub
Private Sub txtIPAddress_LostFocus()
  ' wenn das Control den Focus verliert,
  ' wird auf Gültigkeit geprüft, und nur der Wert "durchgelassen",
  ' der auch für die Erstellung einer IP-Adresse gültig ist:
 CheckIPAddress txtIPAddress, 13
End Sub

Hinweis:
Soll die Eingabe bspw. beim Klick auf einen CommandButton geprüft werden, rufen Sie im Click-Ereignis des CommnadButtons die CheckIPAddress-Prozedur wie folgt auf:

Private Sub Command1_Click()
  ' IP-Adresse auf Gültigkeit prüfen
  CheckIPAddress txtIPAddress, 13
End Sub

Dieser Tipp wurde bereits 15.504 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