1. #1
    Membre du Club

    Profil pro
    Inscrit en
    décembre 2003
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2003
    Messages : 37
    Points : 43
    Points
    43

    Par défaut Affichage caractères spéciaux (tableaux) dans la fenêtre CMD sous Windows 10

    Bonjour,

    Je suis sous Windows 10 et je convertis plusieurs programmes Turbo-Pascal 7.00 MSDOS en Free Pascal.

    L'interface de mes programmes ne nécessite pas que je bascule en Lazarus, mais j'avais fait quelques efforts esthétiques en affichant des caractères spéciaux alt 191, alt 192 etc. permettant de tracer des tableaux.

    Lorsque je lance le programme avec CMD.EXE, je n'arrive pas à afficher les caractères spéciaux. J'ai essayé tous les codes page que je connaissais, mais manifestement pas le bon.

    Je ne vais tout de même pas faire mes tableaux façon "années 80" avec des +, des -, des ! ou pire avec des *

    Comment puis-je faire pour que les caractères spéciaux s'affichent correctement ?

    Merci d'avance pour votre aide.

    Cordialement,

    4BIN

  2. #2
    Expert éminent sénior
    Avatar de JML19
    Homme Profil pro
    Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Inscrit en
    décembre 2010
    Messages
    11 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Secteur : Transports

    Informations forums :
    Inscription : décembre 2010
    Messages : 11 745
    Points : 18 104
    Points
    18 104
    Billets dans le blog
    10

    Par défaut

    Bonjour

    Il faut vérifier le code page utilisé par Windows s'il peut afficher tes caractères spéciaux.

    Ils doivent être des caractères étendus de la table ASCII (ICI).

    Tu utilises un éditeur de texte et tu tapes ces caractères avec la touche Alt activé, par exemple Alt + 144 = É ou Alt + 212 = È ou Alt + 179 =│ou Alt + 186 = ║.
    Vous pouvez utiliser les FAQ (ICI) ou les Tutoriels (ICI) et aussi accéder au blog (ICI)

  3. #3
    Membre du Club

    Profil pro
    Inscrit en
    décembre 2003
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2003
    Messages : 37
    Points : 43
    Points
    43

    Par défaut

    Bonjour JML19,

    Lorsque je saisis ALT 144 ou ALT quelquechose, que ce soit avec Word, Notepad ou la fenêtre de CMD.EXE, il ne se passe rien

    4BIN


  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Profil pro
    Inscrit en
    septembre 2008
    Messages
    4 333
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : septembre 2008
    Messages : 4 333
    Points : 8 742
    Points
    8 742

    Par défaut

    Il faut obligatoirement taper le code sur le pavé numérique (bien sûr avec NumLock ON)

  5. #5
    Membre du Club

    Profil pro
    Inscrit en
    décembre 2003
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2003
    Messages : 37
    Points : 43
    Points
    43

    Par défaut

    Effectivement je ne les avais pas saisi avec le clavier numérique.

    Dans Word, çà ne fonctionne pas, mais dans NotePad et dans la fenêtre CMD.EXE cette fois, çà fonctionne.

  6. #6
    Membre du Club

    Profil pro
    Inscrit en
    décembre 2003
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2003
    Messages : 37
    Points : 43
    Points
    43

    Par défaut

    En fait c'est lorsque j'écris un programme dans lequel se trouve une chaîne avec des caractères spéciaux, que la conversion ne se fait pas.

    Y a-t-il une instruction à ajouter au programme pour que la conversion se fasse ?

    Merci pour votre aide...



    4BIN

  7. #7
    Expert éminent sénior
    Avatar de JML19
    Homme Profil pro
    Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Inscrit en
    décembre 2010
    Messages
    11 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Secteur : Transports

    Informations forums :
    Inscription : décembre 2010
    Messages : 11 745
    Points : 18 104
    Points
    18 104
    Billets dans le blog
    10

    Par défaut

    As-tu testé hexa == ou code hexa == ?
    Vous pouvez utiliser les FAQ (ICI) ou les Tutoriels (ICI) et aussi accéder au blog (ICI)

  8. #8
    Membre du Club

    Profil pro
    Inscrit en
    décembre 2003
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2003
    Messages : 37
    Points : 43
    Points
    43

    Par défaut

    Je viens d'essayer

    writeln($BF);

    et çà me renvoie 191

    et

    writeln(char($BF));

    çà renvoie le caractère non converti


  9. #9
    Rédacteur/Modérateur
    Avatar de Andnotor
    Profil pro
    Inscrit en
    septembre 2008
    Messages
    4 333
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : septembre 2008
    Messages : 4 333
    Points : 8 742
    Points
    8 742

    Par défaut

    Citation Envoyé par forbin Voir le message
    Y a-t-il une instruction à ajouter au programme pour que la conversion se fasse ?
    Regarde ici.

    Et pour plus d'infos, le forum Free Pascal

  10. #10
    Membre du Club

    Profil pro
    Inscrit en
    décembre 2003
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2003
    Messages : 37
    Points : 43
    Points
    43

    Par défaut

    J'ai compilé l'unité SetDefaultCodePages

    qui me semble-t-il comportait une petite erreur

    New_CONSOLE_FONT_INFOEX.dwFontSize.Y := 16;

    au lieu de

    New_CONSOLE_FONT_INFOEX.dwFontSizeY := 16;


    J'ai ensuite lancé


    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
     
    PROGRAM CARAC;
     
    {$mode objfpc}{$H+}
    {$codepage cp1252}
     
    USES DOS, CRT, WINDOWS, SETDEFAULTCODEPAGES;
     
    VAR SST:SHORTSTRING;
     
    BEGIN
     
      Writeln('Console output codepage: ', GetTextCodePage(Output));
      Writeln('System codepage: ', DefaultSystemCodePage);
     
      SST:=#191;
     
      Writeln(char(191),' ',SST);
     
    END.
    et j'ai eu droit à deux magnifiques points d'interrogation à l'envers


  11. #11
    Expert éminent sénior
    Avatar de JML19
    Homme Profil pro
    Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Inscrit en
    décembre 2010
    Messages
    11 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Secteur : Transports

    Informations forums :
    Inscription : décembre 2010
    Messages : 11 745
    Points : 18 104
    Points
    18 104
    Billets dans le blog
    10

    Par défaut

    C'est normal tu n'es pas dans la bonne table ASCCII

    Le caractère #191 est bien le point d'interrogation inversé.

    Vous pouvez utiliser les FAQ (ICI) ou les Tutoriels (ICI) et aussi accéder au blog (ICI)

  12. #12
    Membre du Club

    Profil pro
    Inscrit en
    décembre 2003
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2003
    Messages : 37
    Points : 43
    Points
    43

    Par défaut

    Je viens de lancer

    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
     
    PROGRAM CARAC;
     
    {$mode objfpc}{$H+}
    {$codepage cp1252}
     
    USES DOS, CRT, WINDOWS, SETDEFAULTCODEPAGES;
     
    VAR i:INTEGER;
        rk:CHAR;
     
    BEGIN
     
      Writeln('Console output codepage: ', GetTextCodePage(Output));
      Writeln('System codepage: ', DefaultSystemCodePage);
     
      for i:=1 to 500 do begin
        Writeln(char(i));
        if (i mod 24=0) then rk:=readkey;
      end;
    END.
    mais à aucun moment n'est apparu les caractères spéciaux pour tableau.


  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    6 634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2011
    Messages : 6 634
    Points : 13 952
    Points
    13 952

    Par défaut

    Essayes la page de code 850
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutoriels/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  14. #14
    Membre du Club

    Profil pro
    Inscrit en
    décembre 2003
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2003
    Messages : 37
    Points : 43
    Points
    43

    Par défaut

    Bonjour,

    Merci Chrtophe.

    Je viens de lancer

    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
     
    PROGRAM CARAC;
     
    {$mode objfpc}{$H+}
    {$codepage cp850}
     
    USES DOS, CRT, WINDOWS, SETDEFAULTCODEPAGES;
     
    VAR i:INTEGER;
        rk:CHAR;
     
    BEGIN
     
      Writeln('Console output codepage: ', GetTextCodePage(Output));
      Writeln('System codepage: ', DefaultSystemCodePage);
     
      for i:=1 to 500 do begin
        Writeln(i:3,' ',char(i));
        if (i mod 24=0) then rk:=readkey;
      end;
     
    END.
    Ca ne donne rien de mieux.

    Bizarrement, le code page affiché est toujours 1250, même lorsque j'écris

    pire lorsque ma fenêtre CMD est codée en CP850, elle est convertie en CP1250 juste après le lancement du programme.


  15. #15
    Expert éminent sénior
    Avatar de JML19
    Homme Profil pro
    Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Inscrit en
    décembre 2010
    Messages
    11 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Secteur : Transports

    Informations forums :
    Inscription : décembre 2010
    Messages : 11 745
    Points : 18 104
    Points
    18 104
    Billets dans le blog
    10

    Par défaut

    Bonjour

    Il faudrait modifier le code page dans Windows.
    Vous pouvez utiliser les FAQ (ICI) ou les Tutoriels (ICI) et aussi accéder au blog (ICI)

  16. #16
    Membre du Club

    Profil pro
    Inscrit en
    décembre 2003
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2003
    Messages : 37
    Points : 43
    Points
    43

    Par défaut

    Est-ce que çà veut dire que je dois aller dans REGEDIT ?

    Dans ce cas, comment dois-je procéder ?

    Merci JML19 pour ton assistance

  17. #17
    Expert éminent sénior
    Avatar de JML19
    Homme Profil pro
    Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Inscrit en
    décembre 2010
    Messages
    11 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Secteur : Transports

    Informations forums :
    Inscription : décembre 2010
    Messages : 11 745
    Points : 18 104
    Points
    18 104
    Billets dans le blog
    10

    Par défaut

    Peut être là :

    Cliquez sur Démarrer, pointez sur Tous les programmes, sur Accessoires, sur Outils système, puis cliquez sur Table des caractères.
    Vous pouvez utiliser les FAQ (ICI) ou les Tutoriels (ICI) et aussi accéder au blog (ICI)

  18. #18
    Membre du Club

    Profil pro
    Inscrit en
    décembre 2003
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2003
    Messages : 37
    Points : 43
    Points
    43

    Par défaut

    Je recherché la table des caractères. J'ai sélectionné consolas, police de CMD.EXE.

    Apparemment, rien n'est paramétrable dans cette boite de dialogue

    Nom : table_carac.JPG
Affichages : 40
Taille : 59,0 Ko

    Lorsque j'ai saisi 850 dans la case Page Unicode, çà a modifié instantanément tous les caractères de la table, ma çà n'a rien reparamétré.


  19. #19
    Expert éminent sénior
    Avatar de JML19
    Homme Profil pro
    Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Inscrit en
    décembre 2010
    Messages
    11 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Secteur : Transports

    Informations forums :
    Inscription : décembre 2010
    Messages : 11 745
    Points : 18 104
    Points
    18 104
    Billets dans le blog
    10

    Par défaut

    La page de code change effectivement dans sa totalité.

    Le fait de changer de page de code te permettra de voir si cela influe avec Windows 10 car je ne le sais pas.
    Vous pouvez utiliser les FAQ (ICI) ou les Tutoriels (ICI) et aussi accéder au blog (ICI)

  20. #20
    Rédacteur/Modérateur


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    6 634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2011
    Messages : 6 634
    Points : 13 952
    Points
    13 952

    Par défaut

    Que te donne la commande chcp sous cmd ? Chez moi ça retourne 850.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutoriels/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

Discussions similaires

  1. Affichage caractère spéciaux
    Par nicoaix dans le forum Syntaxe
    Réponses: 9
    Dernier message: 19/05/2006, 12h09
  2. Affichage caractéres spéciaux dans une alert.
    Par nebule dans le forum JavaScript
    Réponses: 13
    Dernier message: 05/05/2006, 13h51
  3. caractère spéciaux à mettre dans une variable
    Par BernardT dans le forum Syntaxe
    Réponses: 7
    Dernier message: 12/12/2005, 11h24
  4. Affichage de caractère spéciaux absent dans le code source
    Par HNT dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 03/11/2005, 22h38
  5. [Delphi+Access] Pb affichage caractère spéciaux
    Par fred64 dans le forum Bases de données
    Réponses: 6
    Dernier message: 02/06/2004, 10h53

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