cs_titounours
Messages postés33Date d'inscriptionjeudi 26 octobre 2000StatutMembreDernière intervention28 février 2007
-
23 févr. 2007 à 14:38
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDerniè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.
cs_titounours
Messages postés33Date d'inscriptionjeudi 26 octobre 2000StatutMembreDernière intervention28 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.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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...)
cs_titounours
Messages postés33Date d'inscriptionjeudi 26 octobre 2000StatutMembreDernière intervention28 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...
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_titounours
Messages postés33Date d'inscriptionjeudi 26 octobre 2000StatutMembreDernière intervention28 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 !!!
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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 #
cs_titounours
Messages postés33Date d'inscriptionjeudi 26 octobre 2000StatutMembreDernière intervention28 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.
cs_titounours
Messages postés33Date d'inscriptionjeudi 26 octobre 2000StatutMembreDernière intervention28 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 !!!!
cs_titounours
Messages postés33Date d'inscriptionjeudi 26 octobre 2000StatutMembreDernière intervention28 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
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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 #
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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 #