Comparer un caractere en hexadecimal : syntaxe? pour definir hexa [Résolu]

Messages postés
63
Date d'inscription
vendredi 25 janvier 2002
Dernière intervention
13 avril 2013
- - Dernière réponse : NHenry
Messages postés
14325
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
18 décembre 2018
- 21 juil. 2011 à 20:55
Pouff! Parfois je me dis que je ne suis pas trop malin, ou que je ne suis pas fûté, 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é
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
>>> OK >>>  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 "["

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

Merci


Pierre
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
63
Date d'inscription
vendredi 25 janvier 2002
Dernière intervention
13 avril 2013
3
Merci
Plus clair ( les couleurs, dans code cela ne fonctionne pas )

While InStr(ZCMP013A, Chr(91)) <> 0
ZCMP013A = Replace(ZCMP013A,  Chr(91)), "")
End While


Pierre

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_PeD
Messages postés
63
Date d'inscription
vendredi 25 janvier 2002
Dernière intervention
13 avril 2013
0
Merci
Bingo !

Après recherches et essais ( perte de temps ! en tout consommation de temps !! ), voici ce qu'il faut faire.
Ne pas être omnubilé par le mot "conversion" mais simplement par la représentation.
Utiliser non pas HEX mais bien CHR

Donc le code qui fonctionne est
While InStr(ZCMP013A, Chr(91)) <> 0
ZCMP013A = Replace(ZCMP013A, Chr(91), "")
End While



Pierre
Commenter la réponse de cs_PeD
Messages postés
14325
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
18 décembre 2018
0
Merci
Bonjour,

Si Tu es en VB.NET (comme tu as classé ton message), je te conseillerais de :
- Eviter InStr, mais préférer MaChaine.Contains ou MaChaine.IndexOf selon les besoins
- Hex, Val(&h ..), ASC, Chr à remplacer respectivement par :
Chaine=MonEntier.ToString("X2")
MonEntier=Integer.Parse(Chaine, Hexadecimal) 'Voir dans la liste de l'énumération le nom exacte du 2ième paramètre
Char.ToUtf32
Char.FromUtf32

Ca fera plus .NET.

Mon site
Commenter la réponse de NHenry

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.