notpa01
Messages postés95Date d'inscriptionmercredi 9 août 2006StatutMembreDernière intervention14 janvier 2012
-
13 janv. 2012 à 14:26
notpa01
Messages postés95Date d'inscriptionmercredi 9 août 2006StatutMembreDernière intervention14 janvier 2012
-
14 janv. 2012 à 11:00
Bonjour à tous et bonne année 2012 !
Les codes ASCII ne sont pas tous les mêmes suivant les machines. J'ai donc écrit un petit programme en VB6 qui liste les codes ASCII de 000 à 255. Mais les valeurs affichées ne correspondent toujours pas à celles affichées lorsque l'on fait un Alt+valeur.
Ex : en faisant Alt+144 dans un message ou dans le blocnote, j'ai É (E majuscule accent aigu). Avec mon programme, j'ai une barre (gras) verticale. Autre exemple : Alt+026 donne @ dans le blocnote, et dans mon programme une petite flèche à droite.
Code utilisé :
Private Sub Form_Load()
Dim v As String ' work
Dim x As String ' work
Dim a As Integer ' valeur ascii de 000 à 255
Dim c As Integer ' n° de colonne
Dim r As Integer ' n° de ligne
'
x = 0
c = 0
r = 0
'
For c = 0 To 7 ' loop pour colonnes
For r = 0 To 31 ' loop pour lignes
coda.Col = c
coda.Row = r
coda.ColWidth(c) = 1200
'
v = Chr(a)
x = a & " " & v
If a < 10 Then x = "00" & a & " " & v
If a > 9 And a < 100 Then x = "0" & a & " " & v
coda.Text = x
a = a + 1
Next r
r = 0
Next c
End Sub
Lancer VB, dans la forme, créer un controle Grid appelé coda , width 9735, Height 9615, Rows = 32, Cols = 8. Copier le code ci dessus dans le Form_Load() et l’exécuter. Vous verrez que tous les caractères ne sont pas affichés, ou alors différents de ce que l'on peut avoir avec Alt+valeur.
Résultat de mon programme :
Voyez-vous une raison à cette différence d'affichage par rapport à Alt+valeur ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 13 janv. 2012 à 17:54
Salut
Les codes ASCII sont uniques.
ASCII : "American Standard Code for Information Interchange"
Ceux que tu peux générer dans NotePad doit dépendre de la langue et du "Code page", voire des caractères Unicode sur 2 octets (URF 8, 16, 32).
Si tu ouvres l'aide de ton IDE VB6 dans la section "Jeu de caractères (0 à 127)" et idem "(128 à 255)", tu auras la liste de ces codes.
A l'origine, ces codes étaient sur 7 bits, donc ne définissaient que les codes 0 à 127; le 8ième bit a permis d'étendre à 255.
Les caractères inférieurs à 32 et le 127 n'ont pas de représentation graphique.
Remarque, tout est décrit sur <Wikipedia>
En fait, quel est ton problème réel avec les caractères ?
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
notpa01
Messages postés95Date d'inscriptionmercredi 9 août 2006StatutMembreDernière intervention14 janvier 2012 13 janv. 2012 à 18:57
Hello,
Merci pour vos réponses !
Tu as raison, Cheyenne. Je me suis mal exprimé : le code ne change pas ! 007 sera toujours 007 comme disait James Bond !
Mon problème, Jack ? Simple : prenons par exemple le code 144. Avec mon programme, j'ai un caractère non imprimable (|). En faisant Alt+144, j'ai (dans le bloc-note, ma messagerie, MS Word, et.) le caractère É (é majuscule) alors que dans mon tableau, le É est affecté au nombre 201. Ce n'est qu'un exemple, il y a un tas de caractères qui sont différents entre mon tableau et Alt+ pour le même code ASCII.
Merci du coup de main.
Notpa01
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_cheyenne
Messages postés693Date d'inscriptionsamedi 18 mai 2002StatutMembreDernière intervention17 avril 20172 13 janv. 2012 à 20:01
Re,
Pour revenir à ton premier post, mets ton Notepad avec la même police que tu utilises dans VB6, tu auras dans les deux cas toujours le yen avec le code 165.(ceci pour la majorité des polices, hors polices spéciales comme Symbol, etc...)
J'ai Courier New dans l'IDE et également dans le NotePad et j'obtiens le yen dans les deux cas.
Il faut que les polices que tu utilises soient identiques pour obtenir le même caractères avec le même code.
Si dans ton IDE, tu as une police X et que ton contrôle Grid a une police Y, il est évident qu'il n'y aurait pas forcément correspondance selon le type de police utilisée.
notpa01
Messages postés95Date d'inscriptionmercredi 9 août 2006StatutMembreDernière intervention14 janvier 2012 13 janv. 2012 à 20:14
D'accord avec toi. Si les polices sont différentes, cela peut expliquer les différences. Mais dans les 2 cas (Grid de VB6 et bloc-note), j'utilise le MS Sans Serif... Et ce n'est pas pareil.
Essaie avec mon petit exemple de MsgBox (je ne crois pas que l'on puisse changer la police dans un MsgBox). Tu as pareil que moi ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 13 janv. 2012 à 20:23
Bonjour,
Les polices n'ont rien à voir ici.
Alt + 165 frappé au clavier ===>> caractère 209 et non 165...
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
notpa01
Messages postés95Date d'inscriptionmercredi 9 août 2006StatutMembreDernière intervention14 janvier 2012 14 janv. 2012 à 11:00
Bonjour Cheyenne et Jack,
OK. Je comprends mieux, grâce au coup du zéro avant la valeur. Exemple, Alt+191 donne (petit crochet gauche), et Alt+0191 donne ¿ . Note : dans mon texte en saisie, j'ai un petit crochet gauche avec Alt+191, mais en aperçu, j'ai un point d’interrogation. Encore une conversion...
Donc, mon programme ne correspond pas (totalement) aux possibilités offertes pas la combinaison de touches Alt. Mais comme je ne peux pas passer une valeur ASCII sur 4 caractère dans la fonction CHR (le zéro de gauche est ignoré), comment faire alors pour simuler Alt+nnnn (4 car.) ?
Le but initial de ce petit programme était d'afficher les caractères en fonction de la valeur passée par Alt+. Je m'aperçois que j'ai fait fausse route (par ignorance).
Jack, je regarde de plus près la gestion des Unicodes.