Procedure ValH(hs$)
; Zapman
; à partir d'une procédure de El Choni
; From a El Choni proc
result = 0
p=0
hs$ = UCase (hs$)
If Left(hs$,1)="$" : d=2 : else : d=1 : EndIf
For t = Len(hs$) To d Step -1
ByteValue = Asc(Mid(hs$,t,1))
If ByteValue>'9'
If ByteValue>'F' : ByteValue-87 : Else : ByteValue-55 : EndIf
Else
ByteValue-48
EndIf
result = result + (ByteValue<<(4*p))
p +1
Next
ProcedureReturn result
EndProcedure
Debug valH("$FF")
C'est trés nettement moins élégant que la version de Brossden. Ca a juste de le mérite de gérer les chaines commençant par $ ($E8, par exemple) et d'être (peut-être) un peu plus rapide à l'execution (mais c'est par sûr).
Dernière modification par ZapMan le ven. 03/déc./2004 12:14, modifié 2 fois.
Normallement, c'est vrai que l'on devrait écrire cette procédure à la manière de Zapman mais l'utilisation de FindString permet facilement de changer de base et de plus cette fonction est extrèmement rapide.
Pour rechercher le dernier mot d'une chaine de caractère de plus de 1Mo, il faut 10ms.
Dès que j'ai le temps, je ferais un test de ces différentes procédures, histoire de voir s'il y a de grandes différences, et puis on peut toujours être surpris!
J'obtiens les résultats suivants pour 500 000 appel de procédure,
voici deux résultats par procédure en ms pour 8 caractères Hexa:
Comtois 561 / 541
Chris 1051 / 1072
Le Soldat 1502 / 1502
Nico 852 / 841
Brossden 1021 / 992
Zapman 1031 / 1042
Comtois izzzzzzzzzz the winer !!!!!!!!!!
(ou plus exactement Froggerprogger, si je ne me trompe)
Mais au final, je propose de garger la procédure de Nico dans nos archives :
- elle est trés élégante
- elle est trés rapide
- elle est trés courte
- elle se comprend facilement
Si seulement tous nos codes correspondaient à cette description !!