Manipulation d'entier 64 bits en vb6

Résolu
cs_mateo1975 Messages postés 5 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 22 décembre 2005 - 17 nov. 2005 à 16:36
cs_mateo1975 Messages postés 5 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 22 décembre 2005 - 18 nov. 2005 à 08:46
Bonjour a tous


J’ai un
petit probleme


J’ai deux données (une
en hexa et une en decimal) que je voudrais comparer mais je n’y arrive
pas


Explication :


J’utilise microsoft fax
serveur (FAXCOMEXLib.FaxServer) qui me renvoi un job id sous la forme 144614278267376223 lors de l’envoi
d’un fax



J’utilise ensuite cette procedure

Public Sub objSender_OnOutgoingJobChanged(ByVal pFaxServer As FAXCOMEXLib.FaxServer, ByVal bstrJobId As String, ByVal pJobStatus As FAXCOMEXLib.FaxJobStatus)

qui surveille les événement du serveur fax et se declanche lorsque l’état d’un fax
change

Le parametre bstrJobId est sous la
forme « 201C5EB7D93925F » en hexa donc.


Si vous ouvrez la
calculette windows et que vous convertissez 144614278267376223 en hexa vous
obtenez bien 201C5EB7D93925F


Le problème c’est que
VB6 n’est pas capable de faire ce genre d’operation 144614278267376223 etant un
entier codé sur 64 bits(il me semble)….


Auriez vous une idée
pour comparer ces deux valeurs (sauf passer sous .Net bien sur
^^)?

J'ai créé une fonction de conversion Hex->Dec mais au mieux elle me retourne : 1.44614278267376E+17

Public Function convHexToDec(sNum As String) As Long
Dim i As Integer, itemp As Integer

Dim iPuissance As Integer
Dim val As Integer
iPuissance = 0
i = Len(sNum)
For itemp = i To 1 Step -1
Select Case Mid(sNum, itemp, 1)
Case "A"
val = 10
Case "B"
val = 11
Case "C"
val = 12
Case "D"
val = 13
Case "E"
val = 14
Case "F"
val = 15
Case Else
val = Mid(sNum, itemp, 1)
End Select
convHexToDec = convHexToDec + (val * (16 ^ iPuissance))
iPuissance = iPuissance + 1
Next
End Function


Merci


++

5 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
17 nov. 2005 à 18:35
désolé je vois que le décimal pour faire ça.

évite d'appeler ta variable val









Private Sub Command1_Click()

Dim str As String



str = "201C5EB7D93925F"

MsgBox convHexToDec(str)



End Sub



Public Function convHexToDec(sNum As String) As Variant

Dim i As Integer, itemp As Integer



Dim iPuissance As Variant

Dim valeur As Integer

iPuissance = CDec(1)

i = Len(sNum)

For itemp = i To 1 Step -1

Select Case Mid(sNum, itemp, 1)

Case "A"

valeur = 10

Case "B"

valeur = 11

Case "C"

valeur = 12

Case "D"

valeur = 13

Case "E"

valeur = 14

Case "F"

valeur = 15

Case Else

valeur = Mid(sNum, itemp, 1)

End Select

convHexToDec = convHexToDec + (valeur * iPuissance)

iPuissance = iPuissance * 16

Next

End Function


Daniel
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
17 nov. 2005 à 18:52
rassures toi ça passe largement:



str = "201C5EB7D93925FFFFFFFFF"

réponse --> 621113595693024425807970303

Daniel
3
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
17 nov. 2005 à 18:31
Apparement, l'hexa de bstrJobId, tu le réceptionne via une chaîne

Le job ID, comment le réceptionne tu ?

Sur deux entiers 32 bits ?
0
cs_mateo1975 Messages postés 5 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 22 décembre 2005
17 nov. 2005 à 18:42
RT15:
Je recois un string
Daniel:
Je vais zieuter dans cette direction merci.
Je teste ca demain au boulot
J'avais meme pas fais gaffe pour la variable qui s'appelle val :s cest pas top en effet
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_mateo1975 Messages postés 5 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 22 décembre 2005
18 nov. 2005 à 08:46
C' est genial!!!
Merci beaucoup
0
Rejoignez-nous