Comment obtenir une valeur Ascii étendu

cs_titounours Messages postés 33 Date d'inscription jeudi 26 octobre 2000 Statut Membre Dernière intervention 28 février 2007 - 23 févr. 2007 à 14:38
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 24 févr. 2007 à 14:16
Bonjour à tous,
mon problème est que dans vb.NET je n'arrive pas à avoir un code Ascii étendu avec Chr().
le code Ascii est bon tant que la valeur est entre 0 et 127 (première page Ascii) mais entre 128 et 255, le code renvoyé est érroné.
Pour exemple voici ce que j'obtient:

chr(126) = ~ (ce qui est correct)

chr(128) = ? (ce qui ne l'est pas)

Quelqu'un peut il m'aider à étendre le code Ascii en mode étendu SVP ?
Merci.

21 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
23 févr. 2007 à 15:28
Je ne vois rien d'erroné, là !

Asc("?") est bien égal à 128 .....
0
cs_titounours Messages postés 33 Date d'inscription jeudi 26 octobre 2000 Statut Membre Dernière intervention 28 février 2007
23 févr. 2007 à 15:40
Bhen oui je sais bien mais le problème est que c'est une commande que j'envoie via le port série à un périphérique et que le but n'est pas d'avoir la valeur de "?" car il agit différement selon chaque code Ascii et non pas selon sa valeur décimale. Le code que Ascii étendu par défaut de .NET n'est pas celui de mon périphérique qui est celui-ci :
www.asciitable.com
(voir en bas de page pour le code ascii étendu)
Merci pour votre aide. 
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
23 févr. 2007 à 15:54
Comme celà t'y est signalé, il y a plusieurs correspondances de codes ascii étendus.
Celui qui figure dans ton lien est présenté comme "le plus populaire", c'est tout.

En Europe, on a décidé de choisir la valeur 128 pour le symbole de l'Euro.


 


Pour VB, certains codes étendus restent libres et réprésentés par un gros point (pas ton C cédille majuscule ...). Chacun décide ensuite de profiter de cette "liberté" pour une correspondance graphique  (le signe Euro n'existait même pas il y a quelques années. Le C cédille majuscule n'existe pas non plus...)
0
cs_titounours Messages postés 33 Date d'inscription jeudi 26 octobre 2000 Statut Membre Dernière intervention 28 février 2007
23 févr. 2007 à 16:12
D'après mon MSDN (en anglais), le code ASCII étendu dépend du "TYPEFACE" (je ne sais pas si ça se dit pareil en Français).
Donc la solution serait de changer le typeface du code Ascii mais je ne sais pas comment faire...
0

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

Posez votre question
cs_titounours Messages postés 33 Date d'inscription jeudi 26 octobre 2000 Statut Membre Dernière intervention 28 février 2007
23 févr. 2007 à 16:16
Pour infos, le code Ascii dont j'ai besoin est le set d'IBM, des ordis qu'on a tous.
Quand je fait un ALT+128 dans mon bloc notes, j'ai bien mon C cédille majuscule : Rageant !!!
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
23 févr. 2007 à 17:32
Ce que tu envoie par le port série n'est pas le symbole ?, mais la valeur 127.

Le symbole ? n'est qu'une interprétation de la valeur 127 par ton système d'exploitation ou ton logiciel. Tout dépend de la page de code qu'il utilise pour traduire la valeur 127 en idéogramme.

Si tu envoie Chr(127), ton périphérique recevra Chr(127) même si pour lui le dessin du caractère correspondant est différant du tient.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
23 févr. 2007 à 17:33
pourquoi 127 alors que c'est 128, chiu pas réveiller moi

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 févr. 2007 à 17:54
salut,
typaface = typo

ascii étendue = 5 octets
3 ->        atl+128 = Ç
5 ->        alt+00128 = ?

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 févr. 2007 à 17:54
3 et 5 à comprendre en nombre de carac, pas en octets * (sorry ^^)
0
cs_titounours Messages postés 33 Date d'inscription jeudi 26 octobre 2000 Statut Membre Dernière intervention 28 février 2007
23 févr. 2007 à 18:05
En fait, je viens de trouver une info interessante, Il y a 2 sets de caractères Ascii étendus. Le plus ancien est le set "Code Ascii étendu OEM" (celui que je veux), le plus récent incorporé aux systèmes est le "Code Ascii étendu ANSI".
Je cherche donc à passer du premier mode vers le second (il y a déja eu des questions de ce style sur le forum mais restées sans réponse).
Merci.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 févr. 2007 à 18:30
re,
http://www.codyx.org/snippet_convertion-chaine-ansi-ascii-ascii-ansi_230.aspx

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
cs_titounours Messages postés 33 Date d'inscription jeudi 26 octobre 2000 Statut Membre Dernière intervention 28 février 2007
23 févr. 2007 à 20:10
Ca à l'air super sauf que je travaille sous VB .NET et que les fonctions : vbFromUnicode et vbUnicode n'existent plus et que je ne sais pas comment faire...
Une dernière aide serait surper SVP !!!!
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 févr. 2007 à 20:51
tu as essayé par API?
3e code de la même page, également en VB6... 2 3 bricoles à modifier (long en integer, peut-être return)
0
cs_titounours Messages postés 33 Date d'inscription jeudi 26 octobre 2000 Statut Membre Dernière intervention 28 février 2007
23 févr. 2007 à 23:56
Je viens d'essayer dans tous les sens le 3ème code de la même page qui me retourne toujours le même caractère que celui à convertir.
Donc je ne pense pas qu'il fonctionne. Le premier était intéressant mais incomplet (j'ai utilisé les conversions qui y sont mais il en manque...).
D'autres idées peut être ?
Merci quand même pour les infos ci dessus, ça aurait pu aider lol
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 févr. 2007 à 02:41
apparemment j'ai réussi

pour transformer çà en fonction, tu peux me donner la fonction space en dotnet stp?
la msdn me renvoie sur le space vb6 (dans le namespace microsoft.visualbasic) et je m'y mets à peine donc ^^

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 févr. 2007 à 04:16
revoir le lien, çà devrait t'aller
(je suis quand même curieux pour space)

++
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
24 févr. 2007 à 08:29
Bonjour PCPT,

Tu n'es apparemment pas le premier à te poser cette question.
Voilà une discussion à ce sujet
http://www.thescripts.com/forum/thread384123.html


La solution y est en réponse 6
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
24 févr. 2007 à 09:07
LA fonction Space n'existe plus en .Net, et il n'y a à ma connaissance pas d'équivalent. L'ancienne fonction VB6 est accessible par le Namespace Mcrosoft.VisualBasic, mais il s'agit bien de la fonction vb6 et non d'une fonction .Net

On peut toujours palier à ce manque en utilisant une des methodes String (constructuer) de la classe String.
 ex : Machaine  = New String(" ", 255 )

PCPT, si tu commence avec .Net, je ne saurait trop te conseiller de systématiquement désactiver le Namespace Microsoft.VisualBasic. Il n'est là que pour assurer une certaine compatibilité avec VB6. Hors tu est en .Net, si c'est pour faire du code VB6, reste en VB6 tu auras tout à y gagner. Pour du code .Net, Microsoft.VisualBasic ne devrait jamais etre utiliser.

De toute façon, en cas d'absolue necessité, même avec le Namespace désactivé, les fonctions sont toujours accessibles en précisant le namespace. Ainsi Space ne marchera pas, il faudra écrire Microsoft.VisualBasic.Space. Mais ça sera volontaire et ça aura le mérite de clarifier le code.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 févr. 2007 à 13:29
merci pour vos recherches et précisions jmfmarques et casy, je vais voir si le snippet a besoin d'être modifié
concernant les fonctions VB6, j'avais laissé volontairement, "au cas où" je perdais trop de temps à chercher l'équivalent de certaines fonctions mais ne savais pas qu'elles restaient accessibles, je regarde donc çà de plus près.
casy -> "reste en VB6 tu auras tout à y gagner", j'ai ouvert un bouquin vendredi dernier, tu me décourages déjà?

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
24 févr. 2007 à 14:04
Non je ne te décourage pas PCPT, je disais juste que pour faire du VB6, reste avec VB6 tu auras tout à y gagner.

VB6 et VB.Net sont à considérer comme étant 2 langages différents. Si c'est pour faire du code VB6, il n'y a que des inconvenients à passer à .Net (lourdeur et lenteur d'execution, ......).

Par contre, quand on commence à regarder le code pur .Net et en laissant tomber le codage VB6, on commence à apprehender
toute la puissance de la plateforme .Net

.Net est de la programmation Objet, la philosophie est tout autre que VB6.

Un exemple, s'il fallait n'en citer qu'un seul est la gestions des bases de données. Quelque soit la base utilisée, Accès, SQL, Oracle, ODBC, la structure du code sera strictement identique. Il n'y a juste que la chaine de connection qui change et le nom des objets.

Par Exemple pour une base Access on utilisera par exemple entre-autre une connection (OledbConnection) et un DataAdapter (OledbDataAdapter). Si ensuite on souhaite passer à une base Oracle. Il n'y a normalement rien à changer dans le code. Juste la chaine de connexion et remplacer Oledb par Oracle dans le nom des objets, classes et methodes.

Personellement je dirais, que lorsque l'on a gouter à .Net, on en chie un peu au départ, mais ensuite on y prend gout très vite.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
Rejoignez-nous