Dieser Tipp beinhaltet eine Erweiterung des Tipps Intelligente TextBox für IP-Adressen von Gerhard Kuklau Erweiterungen/Änderungen von mir:
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
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
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: Private Sub Command1_Click() ' IP-Adresse auf Gültigkeit prüfen CheckIPAddress txtIPAddress, 13 End Sub Dieser Tipp wurde bereits 17.735 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. |
Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... 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 Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
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. |