Page 1 sur 1

string hexa vers valeur decimal marche pas

Publié : dim. 25/janv./2004 20:40
par Patrick88
comprends pas ?

b.b = 15
Debug b

a$ = Hex(b)
Debug a$

a$ = "$"+a$
Debug a$

c.b = Val(a$)
Debug c ; ---> renvoie 0 ? pourquoi ???
; que je mette le $ ou pas toujours = à 0 ???

d = $F
Debug d ; renvoie 15

Patrick

Publié : dim. 25/janv./2004 20:50
par comtois
Syntaxe

Resultat = Val(Chaine$)
Description

Convertit une chaîne en une valeur numérique. La chaîne doit être un entier au format décimal.
Sinon j'ai déjà vu des codes qui faisaient ce que tu veux , je ne sais plus si c'est sur le forum anglais ou dans codearchiv .

Publié : lun. 26/janv./2004 14:45
par brossden
Bonjour

Il est tout à fait normal que :
a.b=$F donne 15 dans a.b car $ peut se comparer à une fonction qui range la valeur F hexa dans a.

La syntaxe Val("$F") ou Val(a$) quand a$="$F" renvoie la valeur de la chaine "$F" et non la valeur de la fonction $F !

Publié : lun. 26/janv./2004 15:42
par brossden
si tu veux obtenir ce que tu souhaite il te faut ecrire une Fonction
Essaye par example ceci :

Code : Tout sélectionner

Procedure HexaVersDecimal(MotHexa.s)

 MotHexa=UCase(MotHexa)
  For n=Len(MotHexa) To 1 Step -1
    Position+1
    ValeurDecimale.b = Asc(Mid(MotHexa,position,1))-48  
    If  ValeurDecimale.b > 9 : ValeurDecimale - 7 :EndIf 
    ValeurDeRetour.l + (Pow(16,n-1) * ValeurDecimale)
   Next
 ProcedureReturn valeur=valeurderetour
 
EndProcedure 



b.b = 15 
Debug b 

a$ = Hex(b) 
Debug a$ 

c.b = HexaVersDecimal(a$) 
Debug c 

d = $F 
Debug d ; renvoie 15 

; Vérification pour un grand Nombre comme "FA2D1E9"
 Debug $FA2D1E9
 
 a$="FA2D1E9"
 
 Debug HexaVersDecimal(a$)
 
; Tout va bien

Publié : lun. 26/janv./2004 17:52
par Patrick88
ok merci

Patrick