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

  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 759
    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 759
    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

  7. #7
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 759
    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 759
    Par défaut
    Citation Envoyé par DjmSoftware Voir le message
    donc std:wstring
    je ne pense pas que ce soit un bon code d'utiliser des chaînes de caractères de la bibliothèque STL avec la bibliothèque VCL qui a ses propres classes.

    Surtout que la classe System.UnicodeString a une méthode w_str (<- documentation officielle) pour retourner une chaîne de type WideChar*.
    En fait non parce que w_str se comporte comme c_str

    Donc @DjmSoftware semble avoir raison : il faut utiliser les chaînes de caractères littérales Unicode L"ccccc" (<- ce qui laisse penser que cette classe ne gère que l'Unicode (sûrement UTF-16) et pas l'ASCII - d'où son nom)

    Et dans la liste des méthodes de la classe System.UnicodeString, il y a la méthode Length (<- 2 liens vers la documentation officielle)

  8. #8
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #include <iostream>
    #include <string>
    .....
     std:wstring s=L"ok";
     Edit1->Text = s.c_str(); 
     s = Edit1->Text; // E2285 Impossible de trouver une correspondance pour 'operator wstring::=(UnicodeString)'
    J'ai trouvé dans un tutoriel un petit programme CodeBlocks qui consiste à créer un mot mystère de manière aléatoire.
    Pour le transcrire en c++ builder, il faut remplacer cin >> motMystere; par motmystere = Edit1->Text Idem pour cin >> motUtilisateur;
    afin de saisir les mots. Toujours une incompatibilité avec string et Edit1->text

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    #include <iostream>
    #include <string>
    #include <ctime>
    #include <cstdlib>
     
    using namespace std;
     
    string melangerLettres(string mot)
    {
       string melange;
       int position(0);
     
       //Tant qu'on n'a pas extrait toutes les lettres du mot
       while (mot.size() != 0)
       {
          //On choisit un numéro de lettre au hasard dans le mot
          position = rand() % mot.size();
          //On ajoute la lettre dans le mot mélangé
          melange += mot[position];
          //On retire cette lettre du mot mystère
          //Pour ne pas la prendre une deuxième fois
            mot.erase(position, 1);
        }
     
       //On renvoie le mot mélangé
       return melange;
    }
     
    int main()
    {
       string motMystere, motMelange, motUtilisateur;
     
       //Initialisation des nombres aléatoires
       srand(time(0));
     
       //1 : On demande de saisir un mot
       cout << "Saisissez un mot" << endl;
       cin >> motMystere;
     
       //2 : On récupère le mot avec les lettres mélangées dans motMelange
       motMelange = melangerLettres(motMystere);
     
       //3 : On demande à l'utilisateur quel est le mot mystère
       do
       {
          cout << endl << "Quel est ce mot ? " << motMelange << endl;
          cin >> motUtilisateur;
     
          if (motUtilisateur == motMystere)
          {
             cout << "Bravo !" << endl;
          }
          else
          {
             cout << "Ce n'est pas le mot !" << endl;
          }
       }while (motUtilisateur != motMystere);
       //On recommence tant qu'il n'a pas trouvé
     
        return 0;
    }
    Cordialement

  9. #9
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 759
    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 759
    Par défaut
    C'est ce que je dis et je le répète "operator wstring::=(UnicodeString)" cela veut dire que la classe std::wstring n'a pas d'opérateur d'assignation qui prend un objet de type System::UnicodeString.
    Et c'est logique - STL et VCL sont 2 bibliothèques distinctes

    D'après la documentation de TEdit.Text (<- documentation officielle), même si ce n'est pas très clair, est de type string - donc System::UnicodeString.

    Lis la documentation officielle et apprends les messages de ton compilateur

    Un code sans compilateur - et donc très sûrement erroné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include <iostream>
    #include <string>
    .....
     System::UnicodeString str = L"ok";
     Edit1->Text = str; // or Edit1->Text = str.c_str();
     str = Edit1->Text; // or str = Edit1->Text.c_str();

  10. #10
    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
    bonsoir,
    excellent Post
    pour ma part je dirais qu'il est préférable d'utiliser des classes compatibles avec la VCL/FMX en c++ Builder

    pour rappel la VCL (Delphi) fait usage d'UnicodeString pour tous les composants graphiques manipulant du texte


    le mélange n'a pas toujours du bon..... et apporte bien souvent des erreurs



    @Magdani
    ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    s = Edit1->Text; // E2285 Impossible de trouver une correspondance pour 'operator wstring::=(UnicodeString)'
    l'erreur retournée par le compilateur est parfaitement compréhensible car il n'existe pas de constructeur avec le type Unicodestring dans la librairie standard

    le code correct est donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    s = Edit1->Text.c_str(); // parfaitement compris par le compilateur
    si tu veux compiler les programmes exemples il est préférable de créer une application console ou d'étudier plus en détail la classe UnicodeString pour regarder
    les membres que tu pourrais réutilisez
    par exemple l'équivalent de size() et Length() en Unicodestring


    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

  11. #11
    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 pour vos réponses.

    Bonjour DjmSoftware.

    J'utilise la version C++Builder 10.3 Starter.

    En utilisant le vieux compilateur C++WIN32 Borland :
    [bcc32 Erreur] Unit1.cpp(27): E2285 Impossible de trouver une correspondance pour 'operator string::=(wchar_t *)'
    Sans l'utiliser :
    [bcc32c Erreur] Unit1.cpp(27): no viable overloaded '='
    (sans utilisation du compilateur Borland, impossible d'avoir les propriétés et évènements des composants derrière le ->)

    Les "include" sont-ils bons ?

    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
    23
    24
    25
    26
    27
    28
    29
    30
    //---------------------------------------------------------------------------
     
    #include <fmx.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    #include <iostream>
    #include <string>
    #include <ctime>
    #include <cstdlib>
     
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.fmx"
    TForm1 *Form1;
     
    using namespace :: std;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    string s;
    Edit1->Text = s.c_str(); // ça marche en lecture
    s = Edit1->Text.c_str(); // ça plante en entrée 
    }
    //---------------------------------------------------------------------------
    Cordialement

  12. #12
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 759
    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 759
    Par défaut
    Alors essaye le truc de bourrin s = System::UnicodeString(Edit1->Text);, mais pas sûr que cela fonctionne

  13. #13
    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
    Non plus. Merci pour ta réponse.
    Je vais voir pour procéder différemment.
    Dommage car le string en tant qu'objet est pratique. Notamment sous forme de tableau.

  14. #14
    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
    Magdani,
    Sois plus attentif aux propos et propositions tenues dans ce post.
    Tu insiste avec ton string alors que c’est wstring qu’il faut utiliser
    Encore une fois la vcl utilise de l’unicode
    Tu peux sans problème employer la classe UnicodeString pour ton application avec quelques petites modifications
    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

  15. #15
    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
    Tu as raison, mais à force de faire des essais, je me suis emmêlé les crayons.

    Le code ci-dessous fonctionne :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    //---------------------------------------------------------------------------
     
    #include <fmx.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    #include <iostream>
    #include <string>
    #include <ctime>
    #include <cstdlib>
     
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.fmx"
    TForm1 *Form1;
     
    using namespace :: std;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    std :: wstring s = L"ok";
    Edit1->Text = s.c_str();
    s = Edit1->Text.c_str(); // parfaitement compris par le compilateur
    Edit2->Text = s.c_str();
    }
    //---------------------------------------------------------------------------
    Cordialement

  16. #16
    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
    Salut
    ton code mystère à la mode VCL
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
     
    #include <vcl.h>
    #pragma hdrstop
    #include <string>
    #include <ctime>
    #include <cstdlib>
    #include "main.h"
    #include <Vcl.Dialogs.hpp>
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm120 *Form120;
    using namespace std;
    //---------------------------------------------------------------------------
    __fastcall TForm120::TForm120(TComponent* Owner)
    	: TForm(Owner)
    {
        srand(time(0));
    }
    //---------------------------------------------------------------------------
     
    String __fastcall melangerLettres(String mot)
    {
       String melange;
       String tmp;
       int position(0);
     
       //Tant qu'on n'a pas extrait toutes les lettres du mot
       while (mot.Length() != 0)
       {
          //On choisit un numéro de lettre au hasard dans le mot
          position = rand() % mot.Length();
          //On ajoute la lettre dans le mot mélangé
          tmp= mot.SubString(position,1);
          melange+=tmp;
          //On retire cette lettre du mot mystère
          //Pour ne pas la prendre une deuxième fois
            mot.Delete(mot.Pos(tmp),1);
        }
     
       //On renvoie le mot mélangé
       return melange;
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm120::Button1Click(TObject *Sender)
    {
       String motMystere, motMelange, motUtilisateur;
       Label1->Caption=L"";
       //Initialisation des nombres aléatoires
         //1 : On demande de saisir un mot
       motMystere =InputBox(L"Saisie Mot Mystere",L"Entrer Le mot Mystère",L"");
     
       //2 : On récupère le mot avec les lettres mélangées dans motMelange
      motMelange=melangerLettres(motMystere);
       //3 : On demande à l'utilisateur quel est le mot mystère
       do
       {
          motUtilisateur=InputBox(L"Saiei Utilisateur",L"Devinez Le mot Mystère",L"");
          if (motUtilisateur == motMelange )
            Label1->Caption=L"Bravo";
          else
            Label1->Caption=L"Mot introduit ne correspond pas";
         }
       while (motUtilisateur != motMelange);
     
    }
    //---------------------------------------------------------------------------
    PS: le code de OPen Classroom est par ailleurs disfonctionnel

    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

  17. #17
    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

    Merci pour ton code, sympa de ta part.

    Je trouve que c'est un peu l'usine à gaz avec les string, String, wsstring, AnsiString, UnicodeString, etc ...

    Cordialement

  18. #18
    Membre expérimenté
    Homme Profil pro
    Développeur multiplateformes
    Inscrit en
    Mars 2003
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur multiplateformes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 277
    Par défaut
    Citation Envoyé par magdani Voir le message

    Je trouve que c'est un peu l'usine à gaz avec les string, String, wsstring, AnsiString, UnicodeString, etc ...

    Cordialement
    La généralisation de l'Unicode a été une très bonne chose. Cela s'est fait très tôt (c'était encore du temps de Borland il me semble). En pratique, que ce soit avec la VCL ou FMX il faut utiliser uniquement les "String" et tout va bien.
    "wstring" sera utile dans certains cas pour assurer la compatibilité avec la biblio standard et du code venant de l'extérieur.

    Yves

  19. #19
    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
    ok et merci Yves

+ 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