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

C++Builder Discussion :

Problème d'affichage lorsque j'affecte par code une chaine unicode dans un TEdit !


Sujet :

C++Builder

  1. #1
    Membre habitué

    Inscrit en
    Février 2005
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 356
    Points : 175
    Points
    175
    Par défaut Problème d'affichage lorsque j'affecte par code une chaine unicode dans un TEdit !
    Bonjour,

    Lorsque je crée une application VCL ou FMX C++ et que je pose un TEdit et un TButton sur la fiche et que dans le TButton, je fais ceci:

    Edit1->Text = "房子";
    Ca ne fonctionne pas, ça affiche des points d'interrogations.

    Pourquoi ? Comment faire pour que ça fonctionne ?

    Aucun problème quand :
    - Je renseigne 房子 dans la propriété Text du composant TEdit1, dans l'inspecteur d'objet
    - A l'execution j'effectue un copier-coller 房子 dans le TEdit1
    - A l'execution, après avoir copier-coller 房子 dans le TEdit1, j'affecte le contenu du TEdit1 dans le TEdit2 à partir du bouton.


    Merci.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    C'est normal Tu affectes une chaîne MBCS - ANSI

    Edit1->Text = L"房子";

    Édit: pepito62 n'a pas vu le L majuscule pour indiquer une chaîne unicode UTF-16

  3. #3
    Membre habitué

    Inscrit en
    Février 2005
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 356
    Points : 175
    Points
    175
    Par défaut
    Pourtant ça fonctionne très bien en Delphi. (J'utilise Rad studio 10.1)

    Comment faire alors ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Message hors-sujet J'ai confondu Delphi (l'EDI, Delphi 6 7) avec Delphi le langage


    Parce qu'en 2009, il y a eu un grand changement niveau Unicode : tout est passé en UTF-16

    Unicode dans RAD Studio

    Remarque : Cela est différent des versions antérieures à 2009, dans lesquelles string était un alias pour AnsiString, et les types Char et PChar étaient respectivement AnsiChar et PAnsiChar.

  5. #5
    Membre habitué

    Inscrit en
    Février 2005
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 356
    Points : 175
    Points
    175
    Par défaut
    Oui ça je sais foetus mais tu ne lis pas tout ce que j'ai écris.

    Avec Delphi 10.1, le faite d'écrire Edit1.Text := '房子';

    Ca fonctionne

    Avec C++ 10.1, le faite d'écrire Edit1->Text = '房子';

    Ne fonctionne pas. C'est le même RAD. Ou est la subtilité ? (Pourquoi Delphi OK, C++ KO ?)

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Citation Envoyé par pepito62 Voir le message
    Oui ça je sais foetus mais tu ne lis pas tout ce que j'ai écris.
    Tu codes quoi en fin de compte

    Edit1->Text = '房子';
    Ceci est une horreur parce que c'est un caractère multiple (<- je ne connais pas le terme)

    ou

    Edit1->Text = "房子";
    Ici tu affectes une chaîne MBCS - ANSI

    ou

    Edit1->Text = L"房子";
    Ici tu affectes une chaîne unicode UTF-16 avec le L majuscule

  7. #7
    Membre habitué

    Inscrit en
    Février 2005
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 356
    Points : 175
    Points
    175
    Par défaut
    Merci beaucoup, C'est le L devant la chaîne qui me manquait !!!

    Je ne connaissait pas cette subtilité.

    Ton dernier post répond à mes interrogations.

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

Discussions similaires

  1. [Web Service] Problème d'affichage des valeurs renvoyées par un webservice
    Par informatique34 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 11/07/2011, 13h34
  2. Checkbox personnalisées non affectées par code JS.
    Par Shakuro dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 03/12/2010, 19h09
  3. Problème d'affichage d'un solide par dessus une image
    Par matimat2k4 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 13/05/2008, 17h43
  4. Réponses: 1
    Dernier message: 08/09/2007, 17h12
  5. [ Problème d'affichage de données ligne par ligne ]
    Par Arkoze dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 05/06/2007, 09h45

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