Bonjour,
venant de Linux je (re)découvre windows et je butte sur les problèmes d'accent dans un programme sous la console
en fonction de l’utilisation de l'unité crt l'affichage change.
alors comment faire ?
avec CRT
sans CRT
merci.
Bonjour,
venant de Linux je (re)découvre windows et je butte sur les problèmes d'accent dans un programme sous la console
en fonction de l’utilisation de l'unité crt l'affichage change.
alors comment faire ?
avec CRT
sans CRT
merci.
Bonjour !
Personnellement, je choisirais l'option sans CRT, et j'éditerais mon code source avec un éditeur utilisant l'encodage OEM, ce qui fait que mon code source ressemblerait à ça dans un éditeur normal :
mais donnerait un résultat correct à l'exécution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 program test; begin WriteLn(' '); ReadLn; end.
Je me suis fabriqué un petit éditeur exprès pour faire ça. Si ça t'intéresse je peux le mettre à ta disposition. Autrement je me rappelle que je faisais ça avant avec l'éditeur natif de Virtual Pascal.
Note que ce n'est qu'une solution parmi d'autres, et peut-être pas la meilleure.
Merci pour ta suggestion
Le souci c'est que l'unité CRT est très pratique avec les gotoxy(x,y); et les write('quelque chose'); et aussi pour les couleurs j’imagine...
comme éditeur j'utilise SciTE qui ne va pas mal mais je veux bien essayer le tien.
en ne mettant pas crt je peux afficher en codant par #144 par exemple :
ce qui donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 writeln('test affichage accents dans console windows sans CRT'); writeln('lettres en dur dans le programme e aigu majuscule #144 : ',#144);
à suivretest affichage accents dans console windows sans CRT
lettres en dur dans le programme e aigu majuscule #144 : É
entrez un texte avec des accents : é è ê
vous avez saisi : é è ê
Pour l'éditeur, je l'ai mis là :
http://delphi.developpez.com/telecha...43/Editeur-OEM
Je viens de faire un essai avec l'unité Crt. C'est curieux, en appuyant sur les touches du clavier je n'obtiens pas les bons caractères.
Pas trop le temps de creuser le pourquoi. Je n'utilise plus depuis longtemps l'unité Crt.
Voici une deuxième solution sans l'unité Crt :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 program accents; {$APPTYPE DELPHI} uses Windows; procedure AnsiWrite(s: ansistring); var ls: ansistring; begin ls := s; CharToOemA(PAnsiChar(ls), PAnsiChar(ls)); Write(ls); end; procedure AnsiWriteLn(s: ansistring); begin AnsiWrite(Concat(s, #13#10)); end; var s: string; begin AnsiWriteLn('éèê'); ReadLn(s); WriteLn(s); ReadLn(); end.
Je n'ai pas l'explication et, comme je n'utilise pas l'unité Crt, je manque de motivation pour étudier ce problème. Peut-être que quelqu'un d'autre saura dire pourquoi on n'obtient pas les bons caractères lorsqu'on entre quelque chose au clavier dans un programme utilisant l'unité Crt.
Autrement il y a quelque chose qui pourrait t'intéresser, c'est l'unité Console de Rudy Velthuis :
http://rvelthuis.de/programs/console.html
C'est une unité qui offre les mêmes fonctionnalités que l'unité Crt, avec la même syntaxe. C'est une unité Delphi compatible aussi bien avec les anciennes versions de Delphi qu'avec les nouvelles. Il y a trois petites modifications à faire pour rendre l'unité compatible avec Free Pascal. Et avec cette unité (je ne sais pas pourquoi), on ne rencontre pas le problème qui a été décrit ci-dessus : quand je tape un "ç", j'obtiens bien un "ç" à l'écran.
Le caractère ne dépend pas de la touche sur laquelle tu as appuyé : oui, à et O (avec accent aigu) sont le même caractère.
En fait, l'affichage du caractère dépend de la police de caractère utilisée dans le terminal et de son code ASCII. Cette police est généralement "Terminal" ou "Fixedsys", alors que dans ton outil de développement ça doit être du Arial ou je ne sais.
C'est un peu comme si tu tapes un A dans un traitement de texte et que ce A tu lui appliques la police de caractère Wingdings : ça ne s'affiche plus pareil, ça fait un joli dessin (Une main avec deux doigts qui qui font un V de la victoire), mais ça reste bien un A. Le code ASCII est le code 0x41 en hexadécimal (ou 65 en décimal)
Enfin bref, ouvre la "table des caractères" dans windows, ça te permettra de voir les différrentes apparences d'un même caractère selon la police utilisée.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager