Tilois
Messages postés721Date d'inscriptiondimanche 10 juin 2001StatutMembreDernière intervention27 mars 2011
-
28 juil. 2003 à 20:42
skram666
Messages postés55Date d'inscriptionvendredi 6 décembre 2002StatutMembreDernière intervention 8 mars 2007
-
2 août 2003 à 21:59
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
skram666
Messages postés55Date d'inscriptionvendredi 6 décembre 2002StatutMembreDernière intervention 8 mars 2007 2 août 2003 à 21:59
La fonction n'est pas de moi je l'ai trouve sur ce site donc dsl . Sinon merci pour ces conseils j'en ferais bon usage merci les gars
@+
skram
cs_mehdibou
Messages postés365Date d'inscriptionvendredi 24 mai 2002StatutMembreDernière intervention18 octobre 2004 31 juil. 2003 à 18:21
Warny, je me permets de réduire un peu ton code :
Public Function Hex2Dec(str as String) As Long
Hex2Dec = Val("&H" & str)
End Function
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015 29 juil. 2003 à 09:04
PS : ton source ne décrypte pas le HTML, mais les URL
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015 29 juil. 2003 à 09:02
Salut,
Tu as encore quelques progrès à faire au niveau code :
- Tes commentaires doivent expliquer le programme, avant une procédure tu dois dire à quoi elle sert, dans une procédure tu dois expliquer comment elle marche
- Tu dois nommer tes variables explicitement ou mettre un commentaire à côté de leur déclaration pour dire à quoi elle servent
- Tu doit donc aussi bien sûr déclarer tes variables dans le type qui optimise le plus les traitements. Tes nombres sont des entiers, tu dois traiter des entiers. Quand tu ne déclare rien tes variables sont des variants. VB doit donc faire une conversion implicite à l'execution(late binding) qui prend du temps.
- Evite les variables globales. Dans 99% des cas, il s'agit de valeurs qui pourrait-être déclarée dans des procédure. Et dans 98% des cas, c'est des variables qu'on est tenter d'utiliser parce qu'elles sont là. C'est donc le meilleur moyen de fusiller son programme.
Voici une procédure améliorable de conversion hexa vers décimal
Tu l'as écrite 3 fois dans ton programme (c'est donc 2 fois de trop)
Public Function Hex2Dec(Val as String) As Long
Dim Figure as Long 'Chiffre hexa testé
Dim Ret as Long ' retour de la function
For Figure=1 to len(Val)
Ret = Ret * 16 ' On décale d'un bit, comme le shift n'existe pas en basic on passe par la multiplication
'En fonction du chiffre on ajoute une valeur à ret, c'est pas otpimisé mais c'est facile à comprendre
Select Case lcase(mid$(val,figure,1))
Case "0":
Case "1":Ret = Ret + 1
Case "2":Ret = Ret + 2
Case "3":Ret = Ret + 3
Case "4":Ret = Ret + 4
Case "5":Ret = Ret + 5
Case "6":Ret = Ret + 6
Case "7":Ret = Ret + 7
Case "8":Ret = Ret + 8
Case "9":Ret = Ret + 9
Case "a":Ret = Ret + 10
Case "b":Ret = Ret + 11
Case "c":Ret = Ret + 12
Case "d":Ret = Ret + 13
Case "e":Ret = Ret + 14
Case "f":Ret = Ret + 15
Case "6":Ret = Ret + 6
End Select
Next
Hex2Dec = Ret
End function
Interresse toi aussi à la fonction mid
Je peux réduire ton programme à une procédure d'une dizaine de ligne en plus de la fonction juste au dessus (que je pourrais réduire encore de moitié)
Va sur le site de microsoft, il y a plein de codes exemples de qualité. Prend exemple !
Tilois
Messages postés721Date d'inscriptiondimanche 10 juin 2001StatutMembreDernière intervention27 mars 20117 28 juil. 2003 à 20:42
mm c bordélik a souhait ... pis les variables nommées 'z' ou 'y' c nul ... bon ta un ti peu commenté .. 5 alor mais suis dans un bon jour
2 août 2003 à 21:59
@+
skram
31 juil. 2003 à 18:21
Public Function Hex2Dec(str as String) As Long
Hex2Dec = Val("&H" & str)
End Function
29 juil. 2003 à 09:04
29 juil. 2003 à 09:02
Tu as encore quelques progrès à faire au niveau code :
- Tes commentaires doivent expliquer le programme, avant une procédure tu dois dire à quoi elle sert, dans une procédure tu dois expliquer comment elle marche
- Tu dois nommer tes variables explicitement ou mettre un commentaire à côté de leur déclaration pour dire à quoi elle servent
- Tu doit donc aussi bien sûr déclarer tes variables dans le type qui optimise le plus les traitements. Tes nombres sont des entiers, tu dois traiter des entiers. Quand tu ne déclare rien tes variables sont des variants. VB doit donc faire une conversion implicite à l'execution(late binding) qui prend du temps.
- Evite les variables globales. Dans 99% des cas, il s'agit de valeurs qui pourrait-être déclarée dans des procédure. Et dans 98% des cas, c'est des variables qu'on est tenter d'utiliser parce qu'elles sont là. C'est donc le meilleur moyen de fusiller son programme.
Voici une procédure améliorable de conversion hexa vers décimal
Tu l'as écrite 3 fois dans ton programme (c'est donc 2 fois de trop)
Public Function Hex2Dec(Val as String) As Long
Dim Figure as Long 'Chiffre hexa testé
Dim Ret as Long ' retour de la function
For Figure=1 to len(Val)
Ret = Ret * 16 ' On décale d'un bit, comme le shift n'existe pas en basic on passe par la multiplication
'En fonction du chiffre on ajoute une valeur à ret, c'est pas otpimisé mais c'est facile à comprendre
Select Case lcase(mid$(val,figure,1))
Case "0":
Case "1":Ret = Ret + 1
Case "2":Ret = Ret + 2
Case "3":Ret = Ret + 3
Case "4":Ret = Ret + 4
Case "5":Ret = Ret + 5
Case "6":Ret = Ret + 6
Case "7":Ret = Ret + 7
Case "8":Ret = Ret + 8
Case "9":Ret = Ret + 9
Case "a":Ret = Ret + 10
Case "b":Ret = Ret + 11
Case "c":Ret = Ret + 12
Case "d":Ret = Ret + 13
Case "e":Ret = Ret + 14
Case "f":Ret = Ret + 15
Case "6":Ret = Ret + 6
End Select
Next
Hex2Dec = Ret
End function
Interresse toi aussi à la fonction mid
Je peux réduire ton programme à une procédure d'une dizaine de ligne en plus de la fonction juste au dessus (que je pourrais réduire encore de moitié)
Va sur le site de microsoft, il y a plein de codes exemples de qualité. Prend exemple !
28 juil. 2003 à 20:42