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 :

Comparer un caractere en hexadecimal : syntaxe? pour definir une constante hexa


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Tooling - Testing
    Inscrit en
    Décembre 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : Belgique

    Informations professionnelles :
    Activité : Tooling - Testing

    Informations forums :
    Inscription : Décembre 2008
    Messages : 141
    Par défaut Comparer un caractere en hexadecimal : syntaxe? pour definir une constante hexa
    Pouff! Parfois je me dis que je ne suis pas trop malin, ou que je n'ai pas bien cherché dans les forums, ou dans la doc; parfois aussi je me dis que l'on pourrait faire simple......

    Mon bête problème : j'ai un champ qui contient des caractères à remplacer par des espaces.
    Ces caractères ne sont pas des caractères de type lettres ou chiffres : du genre en hexa 0D 0A ...
    Je me réfère à la traduction ASCII via UltraEdit et j'obtiens ceci ( extrait)
    pour mon champ ZCMP013A :

    0D 0A 0D 0A 43 52 45 41 54 45 ...
    5B 49 4E 52 5F 49 44 5D 20 5B ...

    où 5B est le caractère [ que je veux par exemple remplacer par un espace .

    Voilà tout ce que j'ai essayé
    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
    While InStr(ZCMP013A, Hex(91)) <> 0
    ZCMP013A = Replace(ZCMP013A, Hex(91), "")
    End While
    While InStr(ZCMP013A, Asc(91)) <> 0
    ZCMP013A = Replace(ZCMP013A, Asc(91), "")
    End While
    While InStr(ZCMP013A, Hex("91")) <> 0
    ZCMP013A = Replace(ZCMP013A, Hex(91), "")
    End While
    While InStr(ZCMP013A, Asc("91")) <> 0
    ZCMP013A = Replace(ZCMP013A, Asc(91), "")
    End While
    While InStr(ZCMP013A, Asc("95")) <> 0
    ZCMP013A = Replace(ZCMP013A, Asc(95), "")
    End While
    While InStr(ZCMP013A, Hex(&H5B)) <> 0
    ZCMP013A = Replace(ZCMP013A, Hex(&H5B), "")
    End While
    While InStr(ZCMP013A, &H5B) <> 0
    ZCMP013A = Replace(ZCMP013A, &H5B, "")
    End While
    While InStr(ZCMP013A, "&H5B") <> 0
    ZCMP013A = Replace(ZCMP013A, “&H5B”, "")
    End While
    While InStr(ZCMP013A, Val(&H5B)) <> 0
    ZCMP013A = Replace(ZCMP013A, Val(&H5B), "")
    End While
    While InStr(ZCMP013A, "[") <> 0
    ZCMP013A = Replace(ZCMP013A, "[", " ")
    End While
    il n'y a que la dernière comparaison qui satisfait à la condition c'est à dire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    While InStr(ZCMP013A, "[") <> 0
    ZCMP013A = Replace(ZCMP013A, "[", " ")
    End While
    or [ en ascii egale 5B . mais je ne trouve pas la bonne syntaxe


    Quelqu'un peut il me donner des indications sur la syntaxe?

    Merci


    Pierre

  2. #2
    Inactif
    Homme Profil pro
    Auteur logiciels et romans
    Inscrit en
    Février 2009
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auteur logiciels et romans
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2009
    Messages : 203
    Par défaut
    Citation Envoyé par PeD012 Voir le message
    Pouff! Parfois je me dis que je ne suis pas trop malin, ou que je n'ai pas bien cherché dans les forums, ou dans la doc; parfois aussi je me dis que l'on pourrait faire simple......

    Mon bête problème : j'ai un champ qui contient des caractères à remplacer par des espaces.
    Ces caractères ne sont pas des caractères de type lettres ou chiffres : du genre en hexa 0D 0A ...
    Je me réfère à la traduction ASCII via UltraEdit et j'obtiens ceci ( extrait)
    pour mon champ ZCMP013A :

    0D 0A 0D 0A 43 52 45 41 54 45 ...
    5B 49 4E 52 5F 49 44 5D 20 5B ...

    où 5B est le caractère [ que je veux par exemple remplacer par un espace .

    Voilà tout ce que j'ai essayé
    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
    While InStr(ZCMP013A, Hex(91)) <> 0
    ZCMP013A = Replace(ZCMP013A, Hex(91), "")
    End While
    While InStr(ZCMP013A, Asc(91)) <> 0
    ZCMP013A = Replace(ZCMP013A, Asc(91), "")
    End While
    While InStr(ZCMP013A, Hex("91")) <> 0
    ZCMP013A = Replace(ZCMP013A, Hex(91), "")
    End While
    While InStr(ZCMP013A, Asc("91")) <> 0
    ZCMP013A = Replace(ZCMP013A, Asc(91), "")
    End While
    While InStr(ZCMP013A, Asc("95")) <> 0
    ZCMP013A = Replace(ZCMP013A, Asc(95), "")
    End While
    While InStr(ZCMP013A, Hex(&H5B)) <> 0
    ZCMP013A = Replace(ZCMP013A, Hex(&H5B), "")
    End While
    While InStr(ZCMP013A, &H5B) <> 0
    ZCMP013A = Replace(ZCMP013A, &H5B, "")
    End While
    While InStr(ZCMP013A, "&H5B") <> 0
    ZCMP013A = Replace(ZCMP013A, “&H5B”, "")
    End While
    While InStr(ZCMP013A, Val(&H5B)) <> 0
    ZCMP013A = Replace(ZCMP013A, Val(&H5B), "")
    End While
    While InStr(ZCMP013A, "[") <> 0
    ZCMP013A = Replace(ZCMP013A, "[", " ")
    End While
    il n'y a que la dernière comparaison qui satisfait à la condition c'est à dire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    While InStr(ZCMP013A, "[") <> 0
    ZCMP013A = Replace(ZCMP013A, "[", " ")
    End While
    or [ en ascii egale 5B . mais je ne trouve pas la bonne syntaxe


    Quelqu'un peut il me donner des indications sur la syntaxe?

    Merci


    Pierre

    Bonjour Pierre,

    Peux-tu déjà regarder si c'est le test qui ne va pas ou l'instruction dedans, soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while ...
      msgbox("Le test est passé, ok")
    loop

  3. #3
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Une expression régulière ne serait elle pas plus adaptée que ca?

  4. #4
    Membre confirmé
    Homme Profil pro
    Tooling - Testing
    Inscrit en
    Décembre 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : Belgique

    Informations professionnelles :
    Activité : Tooling - Testing

    Informations forums :
    Inscription : Décembre 2008
    Messages : 141
    Par défaut
    A HeJoe,

    Je fais un trace ( deboguage ? pas a pas) et c'est le test qui est non satisfait : je ne rentre pas dans l'instruction après le while donc c'est vraiment la syntaxe de la représentation Hexa du caractère [ ou donc son code ascii 5

    D'ailleurs quand je teste avec "[" je réussis bien à transfromer le caractère.
    Mon problème est juste comment présenter formellement ce test.


    Pierre

  5. #5
    Membre confirmé
    Homme Profil pro
    Tooling - Testing
    Inscrit en
    Décembre 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : Belgique

    Informations professionnelles :
    Activité : Tooling - Testing

    Informations forums :
    Inscription : Décembre 2008
    Messages : 141
    Par défaut
    Une expression régulière ne serait elle pas plus adaptée que ca?
    Désolé, je ne comprends pas ce que tu veux dire.
    Mais je suis fort nouveau en .NET


    Pierre

  6. #6
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Une expression régulière permet de détecter des motifs dans une chaine de caractère pour notamment y faire des remplacements.
    Tu peux par exemple trouver tous les caractères qui ne sont pas des lettres.

    Articles complets:
    http://stormimon.developpez.com/dotn...ns-regulieres/ (C'est du C# mais facilement transposable en VB.Net)
    http://dotnet.developpez.com/faq/vbn...x_remplacement
    http://msdn.microsoft.com/fr-fr/libr...ons.regex.aspx
    http://msdn.microsoft.com/fr-fr/library/hs600312.aspx

  7. #7
    Membre confirmé
    Homme Profil pro
    Tooling - Testing
    Inscrit en
    Décembre 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : Belgique

    Informations professionnelles :
    Activité : Tooling - Testing

    Informations forums :
    Inscription : Décembre 2008
    Messages : 141
    Par défaut
    A Nathanael,

    Effectivement l'expression régilière serait plus "régulier" à utiliser, plus dans les standards.
    Mais cela ne resout pas mon problème : comment écrire dans une expression, une instruction la représentation hexa code ascii de ¨[


    est ce &h5B, hex(5B) , val(&h5B) , etc
    Dans tous les emples que j'ai montré, aucun n'a été signalé avec une erreur de syntaxe, ce qui est quand même bizarre.

    En bref comment faire : IF mid(ZCMP013,1,1) = "["
    mais en donnant la valeur HExa de [.

    Remarque : je sais évidemmebt dans ce cas ci tester avec le caractère "imprimable", "visible" [ mais comment faire pour tester des bytes qui contiennent 0D, ou 0A ....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. syntaxe pour définir une variable
    Par ecirb dans le forum InfoPath
    Réponses: 5
    Dernier message: 23/03/2007, 12h02
  2. syntaxe pour modifier une données.
    Par mademoizel dans le forum ASP
    Réponses: 24
    Dernier message: 08/03/2007, 15h18
  3. [Syntaxe] Définir une constante
    Par belukrin dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/09/2006, 16h26
  4. [SQL] probleme de syntaxe pour afficher une photo en php
    Par carmen256 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/04/2006, 21h48
  5. pb syntaxe pour exporter une base
    Par azertyuiopp dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/11/2005, 18h18

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