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 :

string et UnicodeString (c++ builder firemonkey)


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    132
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 132
    Par d�faut string et UnicodeString (c++ builder firemonkey)
    Bonsoir,

    Juste une petite question ...

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
       string s = "ok";
       Edit1->Text = s.c_str();  // pour que Edit1->Text soit compatible avec string et affiche s
       // comment faire pour que s prenne la valeur de Edit1->Text ?
       s.c_str() = Edit1->Text; // [bcc32 Erreur] Unit1.cpp(27): E2277 Lvalue nécessaire
       s = Edit1->Text.c_str(); // [bcc32 Erreur] Unit1.cpp(27): E2285 Impossible de trouver une correspondance pour 'operator string::=(wchar_t *)'
    Merci d'avance ...

  2. #2
    Expert confirm�
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 772
    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 772
    Par d�faut
    Ton compilateur te dit tout

    E2277 Lvalue nécessaire : la m�thode c_str retourne une valeur constante (ce qui est normal) et donc tu ne peux pas faire l'assignation.

    Et sinon en lisant la documentation de System.UnicodeString (Note: In RAD Studio, string is an alias for UnicodeString.), je ne vois pas la m�thode c_str (* c'est une documentation de l'enfer j'ai trouv� cette m�thode )
    Donc je pense qu'il y a une confusion entre std::string et string : utilise le type UnicodeString (ou System::UnicodeString mais pas s�r de sa syntaxe )

    Mais tu dois avoir un using namespace std; qui tra�ne dans ton code qui am�ne la confusion

  3. #3
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    132
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 132
    Par d�faut
    Merci foetus. J'ai tout essay�. Avec ou sans using namespace std.
    J'ai cherch� sur l'aide de rad studio et sur le net, rien non plus ...
    Peut-�tre avec un Variant utilis� pour les variables qui peuvent changer de type � l'ex�cution ?

  4. #4
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    bonjour
    en fait il ne s'agit pas de string mais de String
    voir
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    typedef UnicodeString        String
    ;

    je dirais donc
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    String S= L"OK";
    Edit1->Text=S;
    // avec Compilateur CLANG BCC32C
    S=Edit1->Text.c_str();
    //ou avec le compilateur Borland BCC32
    S=Edit1->Text;

    autre possibilit� en utilisant la librairie Standard
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    //ne pas oublier le fichier #include <string>
     
    std::wstring S=L"OK";
        Edit1->Text=S.c_str();
        S=L"";
        S=Edit1->Text.c_str();
    cdlt
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

  5. #5
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    132
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 132
    Par d�faut
    Bonjour DjmSoftware.

    Dans mon code le string est consid�r� comme un tableau. Ce qui n'est pas le cas avec String.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
      string s ="ok";
      s.size(); // pour par exemple connaître le nombre de caractères.
    Cordialement

  6. #6
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    bonjour
    quelles sont les fichiers include utilis�s dans ton app?

    par ailleurs C++ builder utilise Unicode donc tes chaines de caract�res sont cod�es sur 2 octets, la classe UnicodeString a �t� d�velopp�e � cet effet, dans le cas ou tu utilise la librairie standard il convient d�-lors d'utiliser la version wchar_t de la bibliot�que string

    donc std:wstring

    attention le type string ou wstring n'est en aucun cas un tableau mais une classe

    l'erreur retourn�e par le compilateur est parfaitement normale car
    la m�thode que tu utilise (Edit1->Text.c_str() te retourne un pointeur de type wchar_t* sur le texte de ton editBox alors que le constructeur de la classe string n�impl�mente que le type char*

    Attention dans ton code d'utiliser que de l'UnicodeString et de pr�fixer le texte avec un L
    donc dans ton code
    std::std:wstring S=L"OK"
    si tu oublie le L ton compilateur te le fera imm�diatement remarquer

    cdlt

    ci-joint un lien sur un site tr�s bien fait sur la STL http://www.cplusplus.com/reference/string/string/size/





    cdlt
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. convertir un string en UnicodeString.
    Par magdani dans le forum C++Builder
    R�ponses: 2
    Dernier message: 30/05/2018, 16h25
  2. Cr�er une Image avec un Bitmap C++ Builder Firemonkey
    Par magdani dans le forum C++Builder
    R�ponses: 5
    Dernier message: 03/10/2017, 17h38
  3. R�ponses: 0
    Dernier message: 11/07/2012, 08h51
  4. mon premier pas avec builder c++ problem avec une string grid
    Par chahinerue6 dans le forum C++Builder
    R�ponses: 5
    Dernier message: 30/01/2010, 21h42
  5. Exemple UnicodeString Builder 2009
    Par devroot dans le forum C++Builder
    R�ponses: 11
    Dernier message: 14/11/2008, 11h21

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