Bonjour,
Comment afficher les caractères ascii au-dessus de 128 ?
writeln(chr(218)); n'affiche pas ┌ mais affiche la lettre U accentuée, par exemple.
merci de votre aide.
Version imprimable
Bonjour,
Comment afficher les caractères ascii au-dessus de 128 ?
writeln(chr(218)); n'affiche pas ┌ mais affiche la lettre U accentuée, par exemple.
merci de votre aide.
Gio,
Il n'y a pas de caractères ASCII de code > 127. :)
Si je me souviens bien, la fenêtre WinCrt n'a pas les caractères semi-graphiques du MSDOS de base.
Il faut changer la page de code utilisée, mais j'avoue ne plus savoir comment faire, pour autant que ce soit possible.
Si, ça existe et j'aurais justement besoin de ces caractères, comme ┌ (218), ┘ (217), │ (179), ─ (196) etc pour dessiner un cadre...
Gie,
Je n'ai pas dit qu'il n'existait pas de caractères de code > 127, mais qu'il n'existe pas de caractères ASCII de code > 127.
(La table de caractères ASCII ne concerne que les codes de 0 à 127 inclus)
Ton problème est dû à la table de code utilisée par la console, comme déjà dit. :)
Merci
Pour encadrer du texte, il me faudra passer par l'unité graph je suppose ?
Jio,
C'est un moyen.
Il serait plus simple de réussir à changer la page de code utilisée par WinCrt, mais j'ignore comment faire, en admettant que ce soit possible.
Sinon, un autre moyen est de faire une véritable application Windows, c'était le but principal de TPW par rapport à TP.
Si tu choisis ce dernier moyen, il serait plus simple de passer à Lazarus. :)
wahooo... ce n'est pas simple d'encadrer du texte sous pascal...
Merci, en tout cas, pour votre aide.
Goe,
Ce n'est pas Pascal qui est en cause, le problème serait le même avec tout autre langage utilisant une fenêtre avec une page de code caractères inappropriée.
Profite du problème pour passer à un compilateur moderne, ce sera tout bénéfice pour toi.
(Je pense l'avoir déjà dit, mais il est ridicule de persister à utiliser ces vieux compilateurs 16 bits, alors qu'aujourd'hui, la majeure partie des machines vendues sont des 64 bits, même si de fait la plupart sont "bridées" par l'utilisation d'un OS 32 bits)
Au pire fait une boucle d'affichage de tous les caractères entre 128 et 255, comme ça tu verras quel caractère est associé à quel code. :)
Il est possible de tracer des lignes sur la fenêtre WinCRT mais cela n'est pratricable sans trop d'efforts que si l'affichage ne doit pas scroller.
Pour ce faire, tu peux récupérer le handle de la fenêtre WinCRT (avec GetFocus, par exemple) et utiliser les fonctions de dessin de l'API Windows.
;)
Je ne suis pas assez calé pour faire toutes ces choses... Il me faudrait une formation sérieuse.
C'est fort simple en réalité. :)
Compile le code suivant :
Les unités WinTypes et WinProcs contiennent toutes les déclarations de l'API Windows. Grâce à GetFocus, tu récupères le handle (l'identificateur interne) de la fenêtre WinCRT. La fonction GetDC te renvoie un contexte de périphérique d'affichage ("Device Context" en anglais) qui te permet de dessiner dans la fenêtre. Tu traces tes lignes dans le contexte de périphérique grâce à MoveTo et LineTo. Il ne faut pas oublier de libérer le contexte de périphérique avant la fermeture du programme, grâce à ReleaseDC.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Program Contour; Uses WinCRT, WinTypes, WinProcs; Var hFenetre : hWnd; DC : hDC; Begin InitWinCRT; GotoXY(3,2); WriteLn('Démonstration'); hFenetre := GetFocus; DC := GetDC(hFenetre); MoveTo(DC,10,10); LineTo(DC,128,10); MoveTo(DC,10,10); LineTo(DC,10,36); MoveTo(DC,10,36); LineTo(DC,128,36); MoveTo(DC,128,10); LineTo(DC,128,36); ReleaseDC(hFenetre,DC); ReadLn; DoneWinCRT; End.
Voilà. ;)
Je ne sais comment vous remercier... c'est exactement ce que je souhaite. C'est vrai que ça parait fort simple, quelques lignes et hop ! Mais rien n'est plus difficile que d'être simple ou de faire simple... Je vais me mettre à étudier sérieusement tout ça.
Merci encore pour votre patience et bravo pour votre savoir-faire.