Page 2 sur 2

Publié : ven. 03/déc./2004 12:06
par ZapMan
Voilà ce que j'avais fait (la recherche sur les mots "hexa" ou "conversion" permettait de le retrouver) :

Code : Tout sélectionner

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).

Publié : ven. 03/déc./2004 12:10
par Le Soldat Inconnu
ce qui marche également avec la procedure de Brossden

Publié : ven. 03/déc./2004 12:48
par nico
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.

:)

Publié : ven. 03/déc./2004 12:52
par nico
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!

:)

Publié : ven. 03/déc./2004 13:07
par Le Soldat Inconnu
j'ai déjà fait l'essai entre la mienne et celle de brossden.

ça donne un différence de 33 % environ en faveur de la procedure de Brossden

Publié : ven. 03/déc./2004 21:23
par nico
J'obtiens les résultats suivants pour 500 000 appel de procédure,
voici deux résultats par procédure en ms pour 6 caractères Hexa:

Comtois 470 / 450
Chris 861 / 851
Le Soldat 1232 / 1232
Nico 661 / 651
Brossden 791 / 812
Zapman 811 / 841

:)

Publié : ven. 03/déc./2004 21:54
par nico
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

Publié : mer. 08/déc./2004 6:35
par ZapMan
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 !!