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

Autres IDE Pascal Discussion :

Problème de caractères accentués [MiniPascal]


Sujet :

Autres IDE Pascal

  1. #1
    Membre éclairé

    Inscrit en
    Avril 2003
    Messages
    284
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 284
    Points : 773
    Points
    773
    Par défaut Problème de caractères accentués
    On m'a fait remarquer un bug dans minipascal, et je n'arrive pas à trouver de solution...

    Le problème est le suivant :

    Lorsqu'on utilise des chaines de caractères contenant des caractères spéciaux : é è à et autres spécificités de la langue française j'ai le problème suivant :

    Si j'affiche cette chaine sur une interface win32 (par exemple sur un bouton) tout va bien...
    Si j'affiche cette chaine dans un programme console, j'ai des caractères qui ne correspondent pas (le é devient un U majuscule avec un accent, ou plus exactement le $00E9 = é en unicode donne $E9 = Ú en dos)...
    On peut evidemment jongler à coup de chr(la_valeur_dos_de_mon_caractère) si on veut avoir les caractères désirés, mais c'est lourd à faire...

    Pour vous mettre sur la voie et à titre de renseignement avant que vous ne répondiez : minipascal fournit au compilateur le code source en cours, enregistré sur le disque dur, et pas le texte visible dans la fenetre d'edition...

    Or par défaut, ce code source utilise le jeux de caractères unicode (codé sur 4 bytes) ...
    Les programmes console affichent leur chaines en utilisant un jeu de caractères dos (codé sur deux bytes) ...

    Et dans ces deux jeux de caractères, les accentués ne correspondent pas...

    J'ai bien tenté de saisir dès le début (à l'ecriture du programme, dans minipascal) en utilisant de l'oem à l'affichage, mais celà entraine :
    -un problème clavier : les caractères affichés n'étant pas ceux que je désire
    -le repport du défaut sur les programmes win32

    Vais-je devoir demander (option à cocher) avant ouverture d'un fichier si on travaille en DEFAULT_CHARSET ou OEM_CHARSET et si c'est le cas, comment régler le problème du clavier...
    Autant de soucis non encore résolus...

    Je vous demande des avis d'ordre général sur la démarche à suivre, si vous avez une idée...

    Merci

    Clandestino

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 465
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Points : 4 312
    Points
    4 312
    Par défaut
    L'interface minipascal marche sous win32 ou sous Dos ?

    Citation Envoyé par Clandestino
    Pour vous mettre sur la voie et à titre de renseignement avant que vous ne répondiez : minipascal fournit au compilateur le code source en cours, enregistré sur le disque dur, et pas le texte visible dans la fenetre d'edition...
    Et si c'était le contraire justement ? Si Minipascal tourne exclusivement sous win2, le problème ne serait-il pas réglé, car il n'y aurait qu'un seul jeu de caractère affiché ?

    Ce que tu peux faire aussi, c'est demander à l'utilisateur si c'est un programme console, ou un programme win32, auquel cas tu encodes ton fichier différemment... Comme tu l'as dis c'est liurd, mais c'est une solution envisageable...

    Les problèmes des pages de caractères sont récurrents sous win32. Certains IDE/compilateurs ne s'en préoccupent pas (les IDE ADA pour win32 par exemple...)

    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Je pense que MiniPascal peut demander et/ou détecter si le programme est destiné à être compilé sous Win32 ou bien sous Dos (choix de la plateforme).
    Dès lors, si un programme est destiné à Dos, tu peux passer par un fichier temporaire copiant le code source original, mais en ayant passé toutes les chaînes de caractères à la fonction CharToOem.

    A toi de voir...

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  4. #4
    Membre éclairé

    Inscrit en
    Avril 2003
    Messages
    284
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 284
    Points : 773
    Points
    773
    Par défaut
    Merci de vos réponses...

    Il semble que je doive faire le distinguo entre les application consoles, ou gui... Sous la dénomination peut-etre mal choisie win32 / dos je voulais distinguer un programme avec une interface windows classique (boutons, images, labels et autres widgets graphiques) d'un programme console...

    Minipascal fonctionnant sous win32, une possibilité semble etre un passage par l'astuce indiquée par hdd34 que je vai tester...


    Merci à vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de caractères accentués dans un fichier .bat
    Par JeremieT dans le forum Windows XP
    Réponses: 1
    Dernier message: 02/03/2007, 16h32
  2. Réponses: 5
    Dernier message: 24/01/2007, 23h22
  3. [JSTL] Problème de caractères accentués
    Par youdev dans le forum Taglibs
    Réponses: 2
    Dernier message: 05/12/2006, 15h06
  4. Problème de caractères accentués avec CAM::DBF
    Par ustilago dans le forum Modules
    Réponses: 4
    Dernier message: 23/06/2006, 08h46
  5. problème de caractères accentués (type êéè)
    Par zarbi61 dans le forum Général Python
    Réponses: 4
    Dernier message: 19/05/2006, 20h12

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