IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

mettre des caractères dans une string


Sujet :

VB.NET

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 114
    Points : 43
    Points
    43
    Par défaut mettre des caractères dans une string
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ForEach str AsStringIn TabStr
      Dim ress AsInteger = Val("&H" & str)
      MsgBox("Valeur décimal : " & ress)
      Dim thecar AsChar = Convert.ToChar(ress)
      MsgBox("Valeur ASCII : " & thecar)
      toto = toto & thecar.ToString
    Next
    MsgBox("toto : " & toto)
    Mais le problème est que toto m'affiche que le premier caractère...

    Comment faire pour tout avoir ?

    Merci a tous.

  2. #2
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Il marche trés bien ce code...

    Est-ce exhaustif ?

    C'est du framework 2.0 sur VS2005 ?

    Je comprends pas.

    J'ai testé ça au cas où :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
            Dim TabStr(2) As String
            TabStr(0) = "200"
            TabStr(1) = "201"
            TabStr(2) = "202"
     
            For Each str As String In TabStr
                Dim ress As Integer = Val("&H" & str)
                'MsgBox("Valeur décimal : " & ress)
                Dim thecar As Char = Convert.ToChar(ress)
                'MsgBox("Valeur ASCII : " & thecar)
                toto = toto & thecar.ToString
            Next
            MsgBox("toto : " & toto)
    T'aurais pas tout simplement des caractéres non affichables ?

    Nota : si c'est exhaustif, pense à utiliser les option strict on et option explicit

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    Merci olsimare.

    Alors je suis sous VS 2005, et mon problème est le suivant :

    j'ai une string nommé "final" qui contient ceci :

    4D 00 65 00 6E 00 74 .... etc....

    Je découpe cette string en un tableu de string avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim TabStr() AsString = final.Split(" ")


    Et après, je test la conversion de cette valeur Hexadecimal, en decimal, puis en ASCCI. Je test donc en affichant le resultat avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ForEach str AsStringIn TabStr
      Dim ress AsInteger = Val("&H" & str)
      MsgBox("Valeur décimal : " & ress) 'Affiche : "Valeur décimal : 77"
      Dim thecar AsChar = Convert.ToChar(ress)
      MsgBox("Valeur ASCII : " & thecar) 'Affiche : "Valeur ASCII : M"
    Next
    
    Mais ce que je souhaite, c'est que chaque caractère affiché avec "MsgBox("Valeur ASCII : " & thecar)" soit stocké dans une variable de type string ou autre pour avoir la totalité de la phrase en hexa.

    Mais lorsque j'essai de stocker ce charactère dans un string, je n'ai que le premier charactère (Le 'M' correspondant à la valeur '4D')

    Une idée ???

    Merci beaucoup !

  4. #4
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    Aucune idée svp ???

    Merci à tous

  5. #5
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Donc,
    Tu veux avoir 4D au lieu de M ? si tel est le cas éssaye ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ForEach str AsStringIn TabStr
      Dim ress AsInteger = Val("&H" & str)
      MsgBox("Valeur décimal : " & ress) 'Affiche : "Valeur décimal : 77"
      Dim thecar As String = ress.ToString("X")
      MsgBox("Valeur ASCII : " & thecar) '
    Next

  6. #6
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    Euh non, en fait je souhaiterais obtenir tous les caractères ASCII dans ma string, et non pas seulement le premier, le M...

    Merci

  7. #7
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Ahhh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim total As String = ""
    ForEach str AsStringIn TabStr
      Dim ress AsInteger = Val("&H" & str)
      MsgBox("Valeur décimal : " & ress) 'Affiche : "Valeur décimal : 77"
      Dim thecar AsChar = Convert.ToChar(ress)
      total = total & thecar
      MsgBox("Valeur ASCII : " & total )
    Next

  8. #8
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    Oui, voila, en gros je souhaite faire sa, mais comme je le met dans le début de cette discussion, avec ma variable "toto", cela ne fonctionne pas car au final je n'ai qu'un seul charactère : le premier....

    Peux être ai-je fais une erreur ???

    Merci

  9. #9
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Citation Envoyé par smyley Voir le message
    Ahhh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      total = total & thecar
    Mais ça devrait suffir ça normallement ? ( bien que je n'aime pas le VB.Net ) : on prend ce qu'il y a dans total, on ajoute thecar, et on remet dans total ...

  10. #10
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    Oui, c'est vrai, la j'avoue que je ne comprend pas. Pourtant je lui demande de mafficher le resultat avec le MsgBox et ça fonctione ...

    A mon avis, c est peut être un problème de type de données non ???

    Je suis bloqué....

  11. #11
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Le code est bon et devrait fonctionner.

    Poste tout ton code (la class compléte ou le form), car à mon avis le probléme n'est pas dans celui que tu as mis.

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  12. #12
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    Voici mon code. c'est un peu charabiat, mais c'était pour essayer de débugger

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    PublicClass Form1
     
    Public LeMessage() AsChar
    
    PrivateSub ReadToolStripMenuItem_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ReadToolStripMenuItem.Click
    Try
     
    Dim Donnees AsString = "4D0065006E0074"
    'MsgBox(Donnees)
    Dim outputStr AsNew List(OfString)()
     
    i = 0
     
    ReDim LeMessage(Donnees.Length + 1)
    While i < Donnees.Length
     
     outputStr.Add(Donnees(i).ToString() + Donnees(i + 1).ToString())
     Dim res AsString = Donnees(i).ToString() + Donnees(i + 1).ToString()
     'On récupère la valeur décimal (Val) de l'hexa (&H)
     Dim res1 AsInteger = Val("&H" & res)
     'On la converti en ASCII
     'MsgBox(Convert.ToChar(res1))
     LeMessage(i) = Convert.ToChar(res1)
     'MsgBox("RESULTAT : " & LeMessage(i).ToString)
     i = i + 2
     
    EndWhile
    Dim final AsString = String.Join(" ", (DirectCast(outputStr.ToArray(), String())))
    'MsgBox(final)
    dim tHex AsString = ""
    Dim TabStr() AsString = final.Split(" ")
    ForEach str AsStringIn TabStr
     Dim ress AsInteger = Val("&H" & str)
     'MsgBox("Valeur décimal : " & ress)
     Dim thecar AsChar = Convert.ToChar(ress)
     'MsgBox("Valeur ASCII : " & thecar)
    tHex = tHex & thecar.ToString
    Next
     
    MsgBox(tHex)
     
    Catch ex As Exception
     MsgBox(ex.Message, MsgBoxStyle.Critical, "Erreur")
    EndTry
    EndSub
    

  13. #13
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    C'est les &H00 qui mettent la grouille ...

    Si tu testes avec 4D656E74, ça marche tranquille.

    Le &H00, je le connais comme low-value en cobol mais en .net, je ne sais pas trop ce que cela donne mais rien de bon apparemment.

    Donc un petit if dans le for each pour ne pas les traiter me semble de bon aloi.

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  14. #14
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    Ah ouai...

    Bon, je test ça et vous tiens au courant. Merci beaucoup !!!

Discussions similaires

  1. [AC-2003] Capturer des caractères dans une chaine string
    Par electrosat03 dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/11/2010, 22h02
  2. Vérification des caractères dans une string
    Par julielanglois dans le forum Général VBA
    Réponses: 2
    Dernier message: 01/06/2009, 19h48
  3. [RegEx] Remplacer des caractères dans une string
    Par jexl dans le forum Langage
    Réponses: 2
    Dernier message: 15/03/2007, 22h26
  4. Mettre des espaces dans une string à intervalles réguliers.
    Par benitoelputoamo dans le forum Général Python
    Réponses: 3
    Dernier message: 15/11/2006, 16h14
  5. mettre un entier dans une string
    Par kinder29 dans le forum SL & STL
    Réponses: 14
    Dernier message: 14/02/2005, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo