Conversion string en integer

Résolu
cs_parabole Messages postés 19 Date d'inscription dimanche 17 septembre 2006 Statut Membre Dernière intervention 29 décembre 2010 - 28 sept. 2008 à 23:11
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 30 sept. 2008 à 23:45
Bonjour ,

Sur une application , j'utilise le port com . Les infos en com.imput sont dirigées vers une variable string (INFORMATION_COM ) . Mon problème : je souhaiterais convertir les variables string en integer ou byte .
 Je retire chaque octet recu via  :-->           com.input = INFORMATION_COM
                                                                 data2 = (Mid(INFORMATION_COM, 1, 1))  .

J'ai essayé pleins de routines mais je tourne en rond .: erreur constatée : type incompatible avec : CInt ,Cbyte , etc ...

Merci beaucoup pour votre aide !

@+

 
A voir également:

9 réponses

cs_parabole Messages postés 19 Date d'inscription dimanche 17 septembre 2006 Statut Membre Dernière intervention 29 décembre 2010
29 sept. 2008 à 22:36
Merci à tous pour vôtre aide . C sympa comme tout !  Je n'es pas beaucoup plus de code ; Je renvoi simplement la chaine de caractères qui sort de  com.input vers une variable string INFORMATION_COM . Je pense que c'est OK car la propriété de l'objet Com.est en string . Afin de respecter le protocole de dialogue , je suis obligé d'extraire , et d'analyser  chaque octet qui rentre . Pour éviter toutes erreurs de contrôle , les données doivent d'abord passer en valeur décimal quelqonque. ' integer , byte, etc ... ) car elles vont de 0 à 255 .

Comme je suis un débutant en VB6 , je m'apercoi que ce n'est si facile que cela !!!!  xD .   Mais le travail paye en général  !!!!!

 J'avou de pas trop comprendre les parenthéses après le b dans cette déclaration ?

                                    Dim b() As Byte
Pourquoi le 0 dans les parenthéses ?              MsgBox "'a' = "  & b(0)
Mais je suis à fond preneur !!

Merci encore ....

@+
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
29 sept. 2008 à 22:56
() est pour la déclaration d'un tableau
commençant à 0, toutes les "cases" vont alors prendre la valeur ascii de ta chaine

dim b() as byte => tableau non dimensionné, recevra de 0 à 255 inclus
b() s> le tableau reçoit la chaîne. elle fait 3 caractères ("abc"), le tableau aura donc 3 valeurs, en partant de 0
b(0) retournera 97
b(1) => 98
b(2) => 99 (ascii de "c")
b(3) => erreur car n'existe pas, il auraut fallut 4 caractères pour çà

nb : pour connaitre (récupérer) le dernier emplacement : MAX = ubound(b())
dans ce contexte, c'est forcément aussi : MAX = Len(s)-1

++

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
30 sept. 2008 à 23:45
çà mérite un minimum de réflexion non?

b(0) te retourne 97 et non "a"

un byte (pas un tableau) attent une valeur numérique comprise entre 0 et 255, et tu lui envoie un caractère....

MID c'est bien beau, mais avec ASC (en plus:) c'est plus logique non?

quant à ta plage, il faut le dimentionner avant utilisation
redim nom (TAILLE-1)

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
3
68manu Messages postés 43 Date d'inscription samedi 20 septembre 2008 Statut Membre Dernière intervention 1 octobre 2008
28 sept. 2008 à 23:22
SAlut essaies ca, on sait jamais :-)

Function ReceiveSerialData() As integer
    ' Receive strings from a serial port.
    Dim returnStr As String = " "

    Using com1 As IO.Ports.SerialPort = _
            My.Computer.Ports.OpenSerialPort("COM1")
        Do
            Dim Incoming As String = com1.ReadLine()
            If Incoming IsNothingThen
                Exit Do
            Else
                returnStr &= Incoming & vbCrLf
            End If
        Loop
    EndUsing

    Return cint( returnStr)
EndFunction

Bonne chance

_____________________
No problems, only soluces
0

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

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
29 sept. 2008 à 08:24
Salut,
> [../auteur/PARABOLE/861353.aspx parabole]: Il faut que tu nous montres le code utilisé pour la conversion (la ligne qui foire, les variables et leur type, etc). celui pour extraire UN caractère d'une chaine ne nous sert à rien ici

>[../auteur/68MANU/1479144.aspx 68manu] :Ton code est en .NET et nous cherchons ici une solution en VB6 (si [../auteur/PARABOLE/861353.aspx parabole] ne s'est pas trompé de section en posant sa question)

@+: Ju£i€n
Pensez: Réponse acceptée
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
29 sept. 2008 à 08:41
parabole >  essye d'utiliser la fonction Asc pour récupérer le code ascii du caractère reçu, le code ascci devrait normalement correspondre à l'integer que tu souhaite avoir.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
29 sept. 2008 à 09:00
salut,

string vers byte ?

VB6 fait ces conversions nativement :


    Dim b() As Byte
    Const s As String = "abc"
    
    b() = s
    
    MsgBox "'a' = " & b(0)



++

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
cs_parabole Messages postés 19 Date d'inscription dimanche 17 septembre 2006 Statut Membre Dernière intervention 29 décembre 2010
30 sept. 2008 à 11:07
Merci beaucoup pour ton aide .

A+ pour d'autres aventures !
0
cs_parabole Messages postés 19 Date d'inscription dimanche 17 septembre 2006 Statut Membre Dernière intervention 29 décembre 2010
30 sept. 2008 à 23:24
G encore un soucis !

Dim INFORMATION_COM2 As String
Dim data_temp() As Byte

com.input = INFORMATION_COM2

Si je fais : data_temp(0) = (Mid(INFORMATION_COM2, 1, 1))  ERREUR Type incompatible ...
La différence avec le code ci dessus en exemple  est que INFORMATION_COM2 n'est pas une constante

Si je fais data_temp(0) = 170  , c'est OK ( exemple ! )

Si je remplace data_temp(0) par data_temp(1) : ERREUR indice Hors limite

Au secours ! Je vais craquer ....

Merci beaucoup pour vôtre aide !
0
Rejoignez-nous