Soyez le premier à donner votre avis sur cette source.
Snippet vu 3 561 fois - Téléchargée 25 fois
Private Sub Command1_Click() Text2.Text = IPstringToDouble(Text1.Text) End Sub Private Sub Command2_Click() Text1.Text = IPdoubleToString(Val(Text2.Text)) End Sub Private Function IPstringToDouble(IP As String) As Double Dim dWord As Double IP = Trim$(IP) dWord = Int(Split(IP, ".")(0)) dWord = (dWord * 256) + Int(Split(IP, ".")(1)) dWord = (dWord * 256) + Int(Split(IP, ".")(2)) dWord = (dWord * 256) + Int(Split(IP, ".")(3)) IPstringToDouble = dWord End Function Private Function IPdoubleToString(IP As Double) As String Dim toIp(4) As Integer toIp(0) = Int(IP / 16777216) IP = IP - (CDbl(toIp(0)) * 16777216) toIp(1) = Int(IP / 65536) IP = IP - (CDbl(toIp(1)) * 65536) toIp(2) = Int(IP / 256) IP = IP - (CDbl(toIp(2)) * 256) toIp(3) = Int(IP) IPdoubleToString = toIp(0) & "." & toIp(1) & "." & toIp(2) & "." & toIp(3) End Function
24 mars 2014 à 11:16
http://support.microsoft.com/KB/189323 :
" Dans VBA, les valeurs de la plage d'Integer est comprise entre -32768 à +32767 et pour les valeurs de type Long comprise entre -2147483648 et 2147483647. "
2147483647 = valeur maximal possible d'un type Long en VB6
4294967296 = valeur maximal 4 octets (256*256*256*256)
Dépassement de mémoire
" Lorsque API appels ou appelant une DLL écrite en C, vous pouvez être invité à passer ou recevoir des valeurs non signées dans la plage de 0 à 65535 ou 0 à 4294967296. Les fonctions de conversion fournies ci-dessous convertissent un entier non signé en Long et également à partir d'un Long non signé en Double à des fins d'entrée et l'affichage ou autres calculs. "
Sauf que dans tout les cas la conversion passe par un type Double et c'est une abération car on gache de la mémoire et puis utiliser une API pour ce genre d'opération -_-
24 mars 2014 à 10:53
VB6 ne connais pas le type Long 4 Octets, alors que cela fonctionne en C, C#, PHP
et je ne suis pas le seul a trouver cela bizarre (nombreux forum)
quand au code loin d'être parfait : il cherche simplement à résoudre un besoin,
(en l'occurence le mien), est ce pour cela quil peut paraitre inutile a bon nombre de personnes sur ce forum ?
Je trouve que CS perd de sa superbe avec ce genre de commentaire négatif qui pullule un peu partout : où tout est inutile, ne sert a rien ou bien ne fonctionne pas comme on le souhaiterait pour son usage perso...
Bref c'est gars je vous remercie pour vos commentaires, malgré tout c'est maintenant quil faut argumenter avec du code, comme de vrai développeur :)
- Bien à vous
23 mars 2014 à 03:46
Une IPv4 est formée de 4 bytes/octets.
La représentation d'une IPv4 peut très bien être contenue dans un Long qui peut contenir 4 octets.
Pourquoi se faire suer avec un Double qui risque de provoquer des arrondis bizarres ?
Révise ta copie. Pour transformer des valeurs entières, passe par l'hexa = plus simple.
25 févr. 2014 à 07:29
Voir ici.
Peux tu mettre dans la descriptions à quoi sert ton code, et ce que veut dire , c'est un peu le but d'une description....
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.