Conversion decimal -> hexadecimal

Résolu
calimeria Messages postés 30 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 11 août 2009 - 26 août 2008 à 18:08
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 27 août 2008 à 19:21
bonjour à tous

voilà j'ai lu plein de choses sur cette conversion
notamment que la fonction Hex() permettait de le faire
seulement avec vb6 quand je fais :

Hex(1348)         'ou autre nombre

il me fait une erreur et me demande de mettre un tableau et pas un nombre

si qqn peut m'aider

merci d'avance

@+

14 réponses

jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
27 août 2008 à 09:06
Re,
Sinon essaie de remplacer Hex par Conversion.Hex ou Conversion.Hex$

@+: Ju£i€n
Pensez: Réponse acceptée
3
cs_ghuysmans99 Messages postés 3983 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
26 août 2008 à 18:46
Et MsgBox Hex(1348), ça marche pas ?
_________________________________________________________________________
VB.NETis good ...VB6is better<
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
26 août 2008 à 20:08
Salut
Comme le suggère Ghuysmans99, si cette instruction ne fonctionne pas, c'est que VB ne reconnait pas le mot clé HEX.
Cela peut arriver, en général, sur des fonctions comme Left ou Right, mais bon.
Simplement enregistre ton projet, sors de VB6, éventuellement reboote puis relance le tout, ça va repartir comme en 40.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privésys

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
27 août 2008 à 08:54
Salut,
En complément: Es tu sûr que la ligne est telle quelle? pourrais tu mettre un peu plus de code car l'erreur ne vient peu etre pas de là.

@+: Ju£i€n
Pensez: Réponse acceptée
0

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

Posez votre question
calimeria Messages postés 30 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 11 août 2009
27 août 2008 à 08:56
Salut
merci d'avoir repondu
msgbox Hex(1348) ne fonctionne pas : il me surligne Hex et me dit qu'il attend un tableau

en fait quand j'ecris hex ou HEX vb6 me le change en Hex, du coup j'ai cru qu'il le reconnaissait et comme l'entreprise ou je suis n'a pas de msdn je ne peux pas verifier

rebooter la machine non plus ne marche pas

si vous deux ou qqn d'autre ont des idees, dîtes-le moi
merci d'avance

@+
0
cs_ghuysmans99 Messages postés 3983 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
27 août 2008 à 09:01
Tu peux peut-être essayer Hex$, qui fait la même chose mais retourne une String ...
On sait jamais !
_________________________________________________________________________
VB.NETis good ...VB6is better<
0
calimeria Messages postés 30 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 11 août 2009
27 août 2008 à 09:14
salut jrivet

j'ai pris un nouveau projet dans lequel il n'y a qu'une feuille dont le code ne contient que "msgbox hex(1348)" et en effet cela fonctionne !

mais dans mon projet, meme si je prends une nouvelle feuille, l'erreur se produit
voici le code de la seule feuille de mon projet (en fait je communique avec un automate omron CJM1 et je récupère des données grace à des afficheurs omron => sur ma feuille, il y a un control qui permet la communication avec CX-server, 7 afficheurs omron qui sont liés au control de communication, et 7 listBox.) :

   Private Sub Form_Load()
   Dim tempo As Integer
   Dim heure As String
   Dim datedoj As String
   Dim enr_minut As Integer
   Dim n_cycle1 As String
   Dim n_cycle2 As String
   Dim npas As Integer   
   Dim npas_prec As Integer
   Dim t_cuve As Integer
   Dim t_dech As Integer
   Dim coeffste As Integer
   Dim press As Integer
   Dim i As Integer
   Dim f As Byte
   
   Comms1.ClosePLC
   tempo = Second(Now)
   Do Until Second(Now) = tempo + 5
   Loop
   
   Form1.Show
   tempo = Second(Now)
   Do Until Second(Now) = tempo + 5
   Loop
   
   Comms1.OpenPLC
   tempo = Second(Now)
   Do Until Second(Now) = tempo + 5
   Loop
   f = "0000000000000001"

recomm:
   If (Comms1.CIO(117) And f) <> 1 Then
      GoTo recomm
   Else
      heure = Hour(Now) & ":" & Minute(Now) & ":" & Second(Now)
      datedoj = Date
      List6.AddItem heure
      List7.AddItem datedoj

boucle_pas:
   If Display1.Value = 1234.5 Then   
      GoTo boucle_pas
   Else
      npas_prec = Display1.Value
      heure = Hour(Now) & ":" & Minute(Now) & ":" & Second(Now)
      datedoj = Date
      List6.AddItem heure
      List7.AddItem datedoj
      List1.AddItem Display1.Value
      List2.AddItem Display2.Value
      List3.AddItem Display3.Value
      List4.AddItem Display4.Value
      List5.AddItem Display5.Value
      Do While (Comms1.CIO(117) And 1) = 1
boucle:
         Do While Display3.Value <= 120
            Do Until Display1.Value <> npas_prec
               tps_pas = Comms1.D(16)
            Loop
            List6.AddItem tps_pas
            List7.AddItem ""
            List1.AddItem ""
            List2.AddItem ""
            List4.AddItem ""
            List3.AddItem ""
            List5.AddItem ""
            npas_prec = Display1.Value
         Loop
         Do While Display3.Value > 121   
            enr_minute = Minute(Now)
            heure = Hour(Now) & ":" & Minute(Now) & ":" & Second(Now)
            datedoj = Date
            List6.AddItem heure
            List7.AddItem datedoj
            List1.AddItem Display1.Value
            List2.AddItem Display2.Value
            List3.AddItem Display3.Value
            List4.AddItem Display4.Value   
            List5.AddItem Display5.Value
boucle_minute:
            If Minute(Now) <> enr_minute + 1 Then
               GoTo boucle_minute
            End If
         Loop
      Loop
   End If
End If
heure = Hour(Now) & ":" & Minute(Now) & ":" & Second(Now)
datedoj = Date
GoTo recomm
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
   Comms1.ClosePLC
   tempo = Second(Now)
   Do Until Second(Now) = tempo + 3
   Loop
   End
End Sub

voila. les temporisations servent à laisser du temps au programme sinon toute l'application bloque.
merci d'avance
0
calimeria Messages postés 30 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 11 août 2009
27 août 2008 à 09:15
desolee j'etais en train de taper mon msg alors jai pas vu tous les autres

je vais essayer tout ce que vous m'avez dit et je vous dis quoi
merci
0
calimeria Messages postés 30 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 11 août 2009
27 août 2008 à 09:19
re
Hex$ me retourne une erreur : le caractere de declaration de type ne correspond pas au type de donnees declare. je crois qu'il attend un caractere

j'essaie les autres
@+
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
27 août 2008 à 09:22
Re,
Mais il n'y a pas de Hex dans le code ou je suis aveugle???

@+: Ju£i€n
Pensez: Réponse acceptée
0
calimeria Messages postés 30 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 11 août 2009
27 août 2008 à 09:23
re

Conversion.Hex(1348)  marche !
je crois que je vais faire avec celle-là car deja il reconnait bien conversion (il me met un petit menu des que je mets le point et dans lequel il y a Hex et quand je tape Hex il me demande bien un nombre)

je vais aller essayer ça dans l'atelier (ça va prendre un peu de temps) avec l'automate et je vous dirait quoi (ce qu'il en est , pour ceux qui ne seraient pas du nord : [)   )

mais je ne sais pas pourquoi Hex tout seul ne fonctionne pas
en tous cas merci à tous

@+
0
calimeria Messages postés 30 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 11 août 2009
27 août 2008 à 09:28
Ooops pardon je l'ai retiré hier quand cela ne fonctionnait pas
alors en fait il est :

.....
boucle:
   Do while display3.value <= 120
      Do until display1.value<> npas_prec
         tps_pas = Hex(Comms1.D(16))
      Loop
      List6.additem tps_pas
.....

encore désolée
c parce que la case memoire D(16) renvoie normalement un temps mn:ss
mais elle retourne une valeur decimale et c'est en hexa que l'on peut avoir les 4 chiffres du temps, il me faudra juste ajouter un ":" entre eux

merci
0
calimeria Messages postés 30 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 11 août 2009
27 août 2008 à 09:31
Re
je viens de voir que j'ai oublié une ligne de declaration
"Dim tps_pas as string"

désolée j'ai fait tellement de modif quand l'appli bloquait à cause de la connection....

merci
@+
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
27 août 2008 à 19:21
Re
Je n'ai pas tout lu les réponses, mais pense aussi à regarder si tu n'aurais pas créé une SUB, une FUNCTION ou une VARIABLE, n'importe où dans le code, portant le nom de HEX --> Dans ce cas, le compilateur ne saurait plus s'il a à faire avec ta Sub ou avec sa propre fonction
--> Attention de ne pas utiliser de mot clé dans les noms de fonction ou de variable

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0