Conversion d'une IPv4 en double (VB6 long type fail)

Signaler
Messages postés
51
Date d'inscription
dimanche 11 décembre 2005
Statut
Membre
Dernière intervention
11 octobre 2014
-
 Synfonia -
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/100413-conversion-d-une-ipv4-en-double-vb6-long-type-fail

VB6 le langage qui ne fait rien comme les autres, ne comprend pas les Types Unsigned, c'est la raison pour laquelle on se retrouve avec des dépassements de mémoire.

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 -_-
Bonjour,

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
cs_Jack
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
63
Bizarre et inutile.
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.
Whismeril
Messages postés
14239
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 février 2020
343
Bonjour je me suis permis d'ajouter les balises de codes pour plus de lisibilité.
Voir ici.

Peux tu mettre dans la descriptions à quoi sert ton code, et ce que veut dire
(VB6 long type fail)
, c'est un peu le but d'une description....