IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Free Pascal Discussion :

Affichage de caractères sous console Windows et unité Crt


Sujet :

Free Pascal

  1. #1
    Membre averti
    Avatar de joreveur
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2010
    Messages : 293
    Points : 365
    Points
    365
    Par défaut Affichage de caractères sous console Windows et unité Crt
    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
    Nom : avec_crt.JPG
Affichages : 1263
Taille : 50,1 Ko

    sans CRT
    Nom : sans_crt.JPG
Affichages : 1047
Taille : 48,4 Ko

    merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    program test;
     
    begin
      WriteLn('… ˆ Œ — ‡');
      ReadLn;
    end.
    mais donnerait un résultat correct à l'exécution.

    Nom : accents.png
Affichages : 936
Taille : 4,0 Ko

    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.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  3. #3
    Membre averti
    Avatar de joreveur
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2010
    Messages : 293
    Points : 365
    Points
    365
    Par défaut
    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 :
    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);
    ce qui donne
    test 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 : é è ê
    à suivre

  4. #4
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Pour l'éditeur, je l'ai mis là :

    http://delphi.developpez.com/telecha...43/Editeur-OEM
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  5. #5
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    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.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  6. #6
    Membre averti
    Avatar de joreveur
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2010
    Messages : 293
    Points : 365
    Points
    365
    Par défaut
    Bonjour,
    Citation Envoyé par Roland Chastain Voir le message
    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.
    Oui c'est bien là le problème...
    sinon, j'ai essayé l'éditeur, c'est vrai que c'est bien fait

  7. #7
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par joreveur Voir le message
    Oui c'est bien là le problème...
    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.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  8. #8
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    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.
    Bidouilleuse Delphi

Discussions similaires

  1. Encodage des caractère sous linux/windows
    Par irumi dans le forum Débuter avec Java
    Réponses: 13
    Dernier message: 08/06/2011, 15h33
  2. Réponses: 4
    Dernier message: 07/01/2011, 14h22
  3. Augmenter le nombre max de caractères sous windows..
    Par saebakun dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 17/08/2006, 15h25
  4. Problème d'affichage de caractères sous IE
    Par arnaud_verlaine dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 18/07/2005, 22h21
  5. Polices de caractères sous Windows
    Par goto dans le forum API, COM et SDKs
    Réponses: 24
    Dernier message: 04/11/2003, 15h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo