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

Lazarus Pascal Discussion :

[Mac OS X] Problèmes avec les caractères accentués dans les contrôles et les messages [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 84
    Points
    84
    Par défaut [Mac OS X] Problèmes avec les caractères accentués dans les contrôles et les messages
    EDIT : J'ai modifié le titre puisque finalement, le problème vient d'un souci d'encodage et n'a rien à voir avec AnsiReplaceStr.

    Bonjour,

    J'ai un comportement totalement incompréhensible, ou quelque chose m'échappe complètement :

    Si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var vc_paramstr : AnsiString;
    begin
        vc_paramstr := 'bla bla bla'; 
        vc_paramstr := AnsiReplaceStr(vc_paramstr, 'a', 'é');
        application.MessageBox(Pchar(vc_paramstr), '', 0);  
    end;
    Tout va bien, normal et le programme m'affiche : "blé blé blé"

    Si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var vc_paramstr : AnsiString;
     
    function CharSpe(var pi_str: Ansistring) : boolean;
    begin
        pi_str := strutils.AnsiReplaceStr(pi_str, 'a', 'é');
        result := true;    
    end;
     
    begin
        vc_paramstr := 'bla bla bla'; 
        CharSpe(vc_paramstr);
        application.MessageBox(Pchar(vc_paramstr), '', 0);  
    end;
    Dans ce cas, ma chaine vc_paramstr semble vide et le message qui s'affiche est vide.

    Même problème si je tente de remplacer le "a" de "bla bla bla" par n'importe quel caractère accentué.

    Enfin, si je remplace par un autre caractère qu'un caractère accentué, plus de souci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var vc_paramstr : AnsiString;
     
    function CharSpe(var pi_str: Ansistring) : boolean;
    begin
        pi_str := strutils.AnsiReplaceStr(pi_str, 'a', 'e');
        result := true;    
    end;
     
    begin
        vc_paramstr := 'bla bla bla'; 
        CharSpe(vc_paramstr);
        application.MessageBox(Pchar(vc_paramstr), '', 0);  
    end;
    m'affiche le message "ble ble ble"

    Tout se passe comme si le passage par la fonction plaçait un caractère de fin de chaîne au début de ma variable, si bien que le Pchar(vc_paramstr) est effectivement une chaine vide.

    A noter : J'ai aussi essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var vc_paramstr : AnsiString;
     
    function CharSpe(const pi_str: Ansistring) : AnsiString;
    begin
        result := strutils.AnsiReplaceStr(pi_str, 'a', 'é');    
    end;
     
    begin
        vc_paramstr := 'bla bla bla'; 
        vc_paramstr := CharSpe(vc_paramstr);
        application.MessageBox(Pchar(vc_paramstr), '', 0);  
    end;
    Même résultat.

    Plateforme de dev : Mac OS X.

    Je dois passer à côté de quelque chose de si énorme que je ne le vois pas. Help ....

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Je n'ai pas ce défaut sous windows.
    As tu regardé le code source de ces fonctions ? ou essayé de tracer l'appel dans le cas où le résultat est incorrect ?
    --
    Philippe.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 84
    Points
    84
    Par défaut
    Bonjour Philippe,

    En fait, je pense que le souci provient d'une histoire d'unicode et d'UTF8.
    Quand je trace, dès que je place un caractère accentué dans ma chaîne, le debugger me l'affiche vide. Si j'utilise AnsiToUTF8, le caractère est remplacé par un "?". Mais je ne vois toujours pas de solution. Peut-être faut-il que je change l'encodage du fichier source lui-même ? Encore qu'en remplaçant les caractères accentués par le chr(n) correspondant dans le source, j'ai le même souci...

    Toute idée sera la bien venue...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 84
    Points
    84
    Par défaut
    Point sur la situation : Les chaînes dans lesquels je souhaite insérer des caractères accentués sont destinées à des contrôles (boutons, memos etc.)

    J'ai trouvé une multitude de choses sur le net concernant Lazarus et l'UTF8. Exemple : http://wiki.lazarus.freepascal.org/LCL_Unicode_Support. Certains disent d'utiliser UTF8Encode ou UTF8Decode, d'autres AnsiToUTF8 et UTF8ToAnsi + l'unité cwstring, d'autres encore SysToUTF8 et UTF8ToSys.... Sachant que certains disent aussi qu'il ne faut pas que le fichier source soit lui-même en UTF8 (sans dire dans quel encodage le mettre...). Bref, j'ai tout essayé, changé l'encodage de mes fichiers : Rien ne fonctionne !

    Voici en clair ce que je fais : Je récupère un chaîne (via un paramètre, un fichier de config etc.) Je traduis ma chaîne str en remplaçant $233; par "é" => "aaaéaaa", et je veux qu'un bouton utilise cette chaine comme "caption". C'est là que ça coince :
    L'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    button1.Caption := str;
    ne fait rien à cause d'un problème d'encodage. Quelqu'un a-t-il déjà galéré avec Lazarus et ce p... d'UTF8 sous Mac OS X.

    Cela fait 3 jours entiers que je perds pour afficher un simple libellé sur un bouton, ça devient du grand n'importe quoi. Le projet est en cours depuis 3 ans, et j'avoue que je suis à deux doigts de mettre Lazarus dans la corbeille de mon Mac et de passer au C...

    Suis-je le seul développeur Lazarus sur Mac OS X ?

    Merci pour vos réponses.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 84
    Points
    84
    Par défaut
    Voilà, 3 jours. 3 Jours pour tomber par hasard sur la fonction ISO_8859_1ToUTF8 ...

    Donc pour mettre une chaîne contenant des caractères accentués comme label de composant dans lazarus sous Mac OS X, il faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    button1.Caption := ISO_8859_1ToUTF8(str);
    (Ajouter LConvEncoding dans la clause uses pour utiliser cette fonction)

    Problème résolu, enfin sur ma plateforme Mac Intel, reste à voir ce que donnera l'application sur PowerPC...

    Je pense que le principal problème de Lazarus sur Mac OS X, c'est le manque d'utilisateurs.

    Ma question reste donc ouverte : Y-a-t-il des développeurs Lazarus sous Mac OS X ???...

  6. #6
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 032
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 032
    Points : 1 052
    Points
    1 052
    Par défaut
    Citation Envoyé par sinfoni Voir le message
    ... Ma question reste donc ouverte : Y-a-t-il des développeurs Lazarus sous Mac OS X ???...
    Simplement pour aider, peut-être y en a-t-il plus

    Cordialement.

    Pierre

  7. #7
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 084
    Points : 1 525
    Points
    1 525
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par sinfoni Voir le message

    Ma question reste donc ouverte : Y-a-t-il des développeurs Lazarus sous Mac OS X ???...
    Je ne sais pas (et je compatis) mais moi j'en cherche un pour compiler un gros projet ICI.
    Il est en cours de développement et il tourne sous windows et linux (avec lequel j'ai eu mon lot de soucis aussi) mais pour le faire tourner sous Mac il faudrait que je m’achète un Mac et je ne suis pas prêt a faire un tel investissement (enfin disons plutôt que mon banquier à opposé un refus catégorique )

  8. #8
    Membre habitué Avatar de donnadieujulien
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 433
    Points : 191
    Points
    191
    Par défaut
    unicode string a mon avis

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/08/2014, 02h29
  2. Chiffrement RSA - Problème avec des caractères accentués
    Par HommeDeJava dans le forum Sécurité
    Réponses: 10
    Dernier message: 01/02/2012, 17h14
  3. Problème avec certains caractères accentués
    Par flagadda dans le forum ASP.NET
    Réponses: 7
    Dernier message: 08/10/2007, 13h31
  4. Réponses: 6
    Dernier message: 14/07/2005, 14h25
  5. Chaînes avec des caractères accentués dans Interbase
    Par François Marliac dans le forum Bases de données
    Réponses: 2
    Dernier message: 04/03/2004, 22h39

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