Keine IP größer als 255.255.255.255 Verfasst am: 30.07.2010, 22:14
Hallo!
ich möchte das der User keine IP eingibt in der einer der blöcke größer als 255 ist (weil es ja nicht höher geht), zur fehlervermeidung.
Das ganze sieht dann so aus:
Code:
Dim Max() As String
Dim IP As String
IP = txtip.Text
Max() = Split(IP, ".")
If Max(0) Or Max(1) Or Max(2) Or Max(3) > 255 Then
MsgBox "IP cannot be bigger then 255.255.255.255", vbCritical
End If
txtip.Text = "255.255.255.255"
Else
End If
Allerdings wird, wenn der User einen Block der IP im Textfelt über 255 eingibt, die Meldung zwei mal angezeigt, was recht unschön ist.
Wie kann ich das nun umgehen? _________________
christopher.g Überflieger
Anmeldedatum: 03.05.2008 Beiträge: 536
Verfasst am: 02.08.2010, 07:27
hi
so ein paar kleinigkeiten...
-) hast ein end if zuviel
-) If Max(0) Or Max(1) Or Max(2) Or Max(3) > 255 Then funktioniert nicht ... muss heissen
If Max(0) > 255 Or Max(1) > 255 Or Max(2) > 255 Or Max(3) > 255 Then
-) und du solltest prüfen ob überhaupt das richtige format eingegeben wurde
sont kommt der nächste fehler weil du nicht max(0-3) nicht prüfen kannst
Code:
Private Sub Command1_Click()
Dim Max() As String
Dim IP As String
IP = txtip.Text
If IsIPFormat(IP) = False Then
MsgBox "Fehler"
Exit Sub
End If
Max() = Split(IP, ".")
If Max(0) > 255 Or Max(1) > 255 Or Max(2) > 255 Or Max(3) > 255 Then
MsgBox "IP cannot be bigger then 255.255.255.255", vbCritical
txtip.Text = "255.255.255.255"
Else
End If
End Sub
Private Function IsIPFormat(ByVal IP As String) As Boolean
If IP = Format$(IP, "###,###,###,###") Then IsIPFormat = True
End Function
lg
fakerl Newbie
Anmeldedatum: 30.03.2009 Beiträge: 12
Verfasst am: 02.08.2010, 09:54
Danke! Funktioniert wunderbar, allerdings habe ich noch was hinzugefügt, da die IP nur aus Zahlen bestehen darf aber IP ein String ist, habe ich noch ein OnError eingebaut, falls jemand dort einen Buchstaben eingibt =)
Wo ist eigentlich der Unterschied zwischen Public Function und Private Function?
christopher.g Überflieger
Anmeldedatum: 03.05.2008 Beiträge: 536
Verfasst am: 02.08.2010, 11:00
hi
ist ganz einfach erklärt
Code:
private, public, global
geben den bereich an von dem die funktion oder variable angesprochen werden kann...
private ... nur in dem modul oder form wo die funktion steht
pulic ... für das ganze projekt
und global ... glaub sogar systemweit also für dll usw (bin mir da aber nicht sicher)
so was heist das alles
beispiel:
du hast eine form und ein modul
im modul
Code:
private sub Msg_Box ( byval sText as string)
msgbox sText
end Sub
ist auf der Form "unsichtbar"
Code:
public sub Msg_Box ( byval sText as string)
msgbox sText
end Sub
ist sichtbar
und du kannst die funktion aufrufen
in form1
Code:
private sub command1_click()
modul1.Msg_Box "Das ist ein test"
end sub
und dann würde eine messagebox angezeigt werden
ich hoffe ich habe das halbwechs verständlich erklärt
lg
edit:
nimm nicht on error
sondern lieber
Code:
if isNumeric (txtip.text ) = false then 'Fehler
zwecks der übersicht
und mit den ganzen goto wirst wahnsinig
Zuletzt bearbeitet von christopher.g am 02.08.2010, 11:04, insgesamt einmal bearbeitet
fakerl Newbie
Anmeldedatum: 30.03.2009 Beiträge: 12
Verfasst am: 02.08.2010, 11:04
Ah okay, also ganz einfach: Public ganzes Projekt und Private nur im Modul/Form in der man sich gerade befindet. Okay vielen dank =)
christopher.g Überflieger
Anmeldedatum: 03.05.2008 Beiträge: 536
Verfasst am: 02.08.2010, 11:05
hab dir oben noch was gepostet
nur du warst schneller als ich mit dem editieren _________________
fakerl Newbie
Anmeldedatum: 30.03.2009 Beiträge: 12
Verfasst am: 02.08.2010, 11:09
Mein OnError bestünde aus einem GoTo und dann käme
Aber ich denke mit deiner methode wirds beim debuggen besser, weil die IDE mir dann direkt zum fehler springt, wenn was anderes schief geht als eine falsche IP. Danke nochmals =)