ASK_hommer
Messages postés7Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention24 juin 2004
-
17 juin 2004 à 09:26
ASK_hommer
Messages postés7Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention24 juin 2004
-
24 juin 2004 à 16:49
J'ai un chtit problème pour faire un controle sur une liste d'adresses IP que je reçois à partir d'un fichier texte, ce qui explique que mon controle se fasse à partir d'une chaine.
Bon j'ai pu voir la simplicité des codes en javascript pour créer un maque de saisie et comparer l'IP à ce masque, et je voulais savoir si y avait pas moyen de faire la meme chose en VB: créer un masque de saisie, mais pas à partir d'une MaskEditBox.
Mon code est super mega compliqué, mais il marche. Si un jour un gars veut l'utiliser, il rique de pas comprendre même si je met des commentaires de partout. Moi meme, j'ai du mal à me relire des fois !
Si quelqu'un veut quand meme voir mon source faut demander. Je ne l'affiche pas volontairement pour éviter de vous faire mal à ma tête, mais si vous tenez vraiment à le voir, je ne fournis pas les cachets d'aspirine avec !
cs_metos
Messages postés168Date d'inscriptionvendredi 18 janvier 2002StatutMembreDernière intervention19 octobre 2009 18 juin 2004 à 13:21
si j'ai bien compris t'as une jolie liste d'IP dans un fichier text et tu l'as sous forme d'une chaîne, et tu désire sortire les ip qui correspondent à un masque. genre IP : 192.168.0.6 et le masque : 192.168.x.x et dans ce cas l'IP se trouve dans le masque. j'ai compris juste ou je suis a coter? si c'est ca, ca me semble pas très compliquer.
ASK_hommer
Messages postés7Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention24 juin 2004 19 juin 2004 à 12:02
En fait je veux juste faire un controle de validité d'une adresse IP. mais mon code est très lourd:
Vérifier qu'il y a les 3 point ( simple ),et vérifier que les valeurs contenues dans les décimales pointées sont valides( simple ). mais pour isoler les valeurs entre les points c'est méga comliqué comme j'ai fais. Je voulais savoir si il existait pas un système pour faire comme en javascript: avec un masque, mais sans passer par une MaskEditBox évidemment.
Par contre, ne fais aucun controle sur le masque.
if p1=0 or p2=0 or p3=0 or p1=p2 or p2=p3 or p1=p3 then
IsValidIp=false
else
ad1=left(ad,p1-1)
ad2 = mid(ad,p1+1,p2-p1-1)
ad3 = mid(ad,p2+1,p3-p2-1)
ad4 = mid(ad,p3+1,len(ad)-p3)
if isnumeric(ad1) = false then
isvalidip=false
elseif isnumeric(ad2) = false then
isvalidip=false
elseif isnumeric(ad3) = false then
isvalidip = false
elseif isnumeric(ad4) = false then
isvalidip=false
else
p1=val(ad1)
p2=val(ad2)
p3=val(ad3)
p4=val(ad4)
if p1<0 or p1>255 then
isvalidip=false
elseif p2<0 or p2>255 then
isvalidip=false
elseif p3<0 or p3>255 then
isvalidip=false
elseif p4<0 or p4>255 then
isvalidip=false
endif
endif
endif
end function
ASK_hommer
Messages postés7Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention24 juin 2004 22 juin 2004 à 08:29
je ne connaissais pas la fonction "mid" et je vois qu'elle m'aurais été vraiment utile, en tout cas ton code est carément plus simple que le mien( je l'ai compris en une seule lecture ^_^ ), d'ailleur je pense que je peux me permettre de remplacer mon code par le tien ?
je te poste le mien ( tu verra à quel point mon cerveau est en bordel pour créer une usine à gaz comme celle là, je peux presque envoyer des fusées sur mars, je me demande si elle pouront etre habitées ! ). ^_^
Private Function IpValid(IpAdress As String) As Boolean
'---- Vérif si présence de 3 "." et
' si les 4 octets ont des valeurs correcte
Dim Octet As String
Dim OctetGauche As String
Dim Curseur As Integer
Dim Compteur As Integer
Dim cpt As Integer
Dim CptPoint As Integer
IpValid = True
Curseur = 1
CptPoint = 0
Compteur = 0
If Not IsNumeric(Left(IpAdress, 1)) Then
IpValid = False
End If
'On compte le nombre de points Do While CptPoint <3 And IpValid True And Compteur < 4
Curseur = InStr(Curseur, IpAdress, ".") + 1
If Curseur <> 1 And Curseur > 2 Then
CptPoint = CptPoint + 1
'On prend toutes les valeurs jusqu'à celle qui nous interessents
OctetGauche = Left(IpAdress, Curseur - 2)
Else
'Sur les derniers octets de l'adresse, il n'y a pas de point, donc lors du test
'il faut prévoir ce cas, et on prend tout l'adresse.
OctetGauche = IpAdress
End If
cpt = 0
'On tronque les valeurs contenues des décimales pointées qui ne nous interessent pas
Do While cpt < CptPoint
OctetGauche = Right(OctetGauche, Len(OctetGauche) - InStr(1, OctetGauche, "."))
cpt = cpt + 1
Loop
If Not IsNumeric(OctetGauche) Then
IpValid = False
Else
If OctetGauche > 255 Or OctetGauche < 0 Then
IpValid = False
End If
End If
Compteur = Compteur + 1
Loop
If CptPoint < 3 Then
IpValid = False
End If
End Function
hommer ( ouf c'est fini ... lol )
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_metos
Messages postés168Date d'inscriptionvendredi 18 janvier 2002StatutMembreDernière intervention19 octobre 2009 22 juin 2004 à 19:33
'sort la place de la virgule et stocker la valeur dans pos
Dim pos as integer
pos = InStr(IP, "Chaine_caractère_recherchée")
cette fonction de resort la position de la première chaine de caractères. A la place de IP du mets la variable qui contien l'IP et ensuite Chaine_caractère_recherchée tu remplace dans ton cas par un point (.). comme ca tu sais a quel endroit se trouve le premier point. ensuite avec Mid tu peux sortir dans une variable l'IP en enlevant la première partie et tu recommence comme ca 4 fois. Et pour faire bien tu mets une boucle avec un compteur.
kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 23 juin 2004 à 23:08
pour info, au debut de la fonction, tu peux rajouter
p4=instr( 1 , ad , "," )
et
if p1=0 or p2=0 or ... or p4<>0 .....
car une IP du genre 125,2 . 100 . 100 . 100 serai reconnue valide : p1 = "125,2" ce qui est accepte comme nombre decimal par IsNumeric !! ( la virgule est le caracter de separation decimale et est consideree comme un caractere numerique par isnumeric)