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 :

Quel #include pour AnsiString... et string?


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    38
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 38
    Par d�faut Quel #include pour AnsiString... et string?
    Bonsoir.

    Je suis assez d�sorient� concernant les AnsiString, et la doc en ligne de C++ Builder 2007 ne m'aide pas beaucoup � r�soudre mon probl�me de compilation. Ma question est:

    Quel #include faut-il mettre pour utiliser les AnsiString?

    D'une mani�re g�n�rale comment savoir quel #include mettre pour une fonction donn�e?

    Merci d'avance.
    Felipe.

  2. #2
    Membre �m�rite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    916
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 916
    Par d�faut
    De base, tout y est d�j�.

    Si tu d�clares une AnsiString, tout fonctionne. C'est comme un int, tu ne le d�clare pas, c'est reconnue par le compilateur.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    38
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 38
    Par d�faut
    Hum, hum, pourtant, en fonction des include que j'ajoute (ex. vcl.h, string.h, iomanip.h), �a compile ou non, et je ne vois pas la logique...

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 398
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par d�faut
    C'est pourtant simple:
    • <vcl.h> : AnsiString est une classe sp�cifique � la VCL, il est donc probable que ce soit ce header-l� le bon...
    • <string.h> : Obsol�te. Utiliser <string> si tu as besoin de la classe std::string de la biblioth�que standard C++.
    • <iomanip.h> : Obsol�te. utiliser <iomanip> si tu as besoin des manipulateurs de flux de la biblioth�que standard C++.

    bandit boy: Ben non. AnsiString est une classe, et n�cessite d'�tre d�clar�e.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par d�faut
    Salut
    Je rejoind bandit boy, dans BCB " vcl " est automatiquement declare dans l'entete donc pas de probleme avec AnsiString
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    Je pense que la question a ete mal formulee et surtout sans un morceau de code pour aider a repondre, utilisation de BCB en RAD ou en mode console ?

  6. #6
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 398
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par d�faut
    Oui, la ligne#include <vcl.h> est automatiquement ins�r�e dans le code source � la cr�ation.
    Mais en aucun cas la classe AnsiString n'est consid�r�e comme un type de base "comme un int, tu ne le d�clare pas, c'est reconnue par le compilateur"...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    38
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 38
    Par d�faut
    Citation Envoy� par M�dinoc Voir le message
    C'est pourtant simple:
    • <vcl.h> : AnsiString est une classe sp�cifique � la VCL, il est donc probable que ce soit ce header-l� le bon...
    • <string.h> : Obsol�te. Utiliser <string> si tu as besoin de la classe std::string de la biblioth�que standard C++.
    • <iomanip.h> : Obsol�te. utiliser <iomanip> si tu as besoin des manipulateurs de flux de la biblioth�que standard C++.

    bandit boy: Ben non. AnsiString est une classe, et n�cessite d'�tre d�clar�e.
    Merci M�dinoc, tes messages sont tr�s �clairants. Premi�rement, je ne connaissais pas la diff�rence entre string et string.h, iomanip et iomanip.h. Deuxi�mement, je me doutais un peu que AnsiString �tait une classe sp�cifique � la VCL, mais o� est-ce expliqu�?

    blondelle, ma question �tait mal formul�e, c'est vrai, excuse le d�butant. Le contexte est bien en RAD et pas en console, mais le fichier que je n'arrive pas � compiler est celui d'une Unit.cpp cr�e par New/Unit, donc pas associ� � une form. Il n'y avait donc pas de #include <vcl.h> dedans.

    Encore une question: j'ai � la fois des string et des AnsiString. Que choisir entre les deux? Si j'utilise les AnsiString, je restreins la portabilit� de mes sources, non?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    38
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 38
    Par d�faut
    M�dinoc, <string> ne fonctionne pas, j'utilise donc <string.h>, idem pour <iomanip>.

  9. #9
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par d�faut
    Salut
    Post le bout de code qui ne fonctionne pas

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    38
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 38
    Par d�faut
    Citation Envoy� par blondelle Voir le message
    Salut
    Post le bout de code qui ne fonctionne pas
    Le Unit1.h est le fichier par d�faut, je ne l'ai pas modifi�. Voici le Unit1.cpp:

    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
     
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include <string>
    #include <iomanip.h>
     
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
     
    string a;
     
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    J'ai ajout� deux #include et la ligne string a;

    Le programme compile avec <iomanip.h>, et pas avec <iomanip>.

    ??

  11. #11
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par d�faut
    Ok j'ai compris, il faut ecrire " String " la premiere lettre en majuscule est importante idem " AnsiString "
    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
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include <string>
    #include <iomanip.h>
     
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
     
    String a;
     
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    38
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 38
    Par d�faut
    Ca alors! Ok �a marche, merci!

    Donc

    • string a; va avec <string.h>
      String a: va avec <string>


    si j'ai bien compris.

    Encore une fois: o� ceci est-il expliqu� dans la doc?

  13. #13
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par d�faut
    Les mots de commande commence par une majuscule en utilisant la " vcl " BCB
    Quand ton curseur est sur un mot faire F1 tu a l'aide en ligne
    Quand tu ecrit par exemple Edit1->ici tu laisse le temps au compilateur de reagir et il t'affiche la liste des possibilitees de code

  14. #14
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 398
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par d�faut
    Citation Envoy� par Felipe_ Voir le message
    Ca alors! Ok �a marche, merci!
    Donc
    • string a; va avec <string.h>
    • String a: va avec <string>

    si j'ai bien compris.
    Ben non.
    • String, si je me souviens bien, est juste un b�te alias de AnsiString (du moins, quand tu ne compiles pas en unicode, je pense...)
    • string sans namespace va avec le vieux <string.h>
    • std::string va avec <string> (depuis que le C++ est normalis�, toutes les classes standard sont dans le namespace std)

    Et pour savoir que la classe AnsiString vient de la VCL: Par �limination.
    • Si ce n'est pas une classe standard (et d'une part �a n'y ressemble pas car toutes les classes standard sont tout en minuscules, d'autre part ton livre de C++ devrait te le dire),
    • ni une classe MFC (elles commencent par C et ne sont disponibles que sous Visual),
    • ni une classe d'une bilbioth�que ext�rieure (car je pense que tu ne sais m�me pas encore en installer)

    Alors ce doit �tre une classe de la VCL.

    Bien s�r, pour ma part, j'ai appris que c'�tait une classe de la VCL tout simplement en lisant les messages sur le forum...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    38
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 38
    Par d�faut
    C'�tait pas si simple, finalement. J'ai bien fait de poser la question, j'ai appris de choses.

    Merci M�dinoc.

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    36
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 36
    Par d�faut
    Pour avoir AinsiString en mode console Il suffit d'ajouter rtl.lib, j'avais deja ajout� System.hpp � mon application console initialement mise au point en vcl.

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

Discussions similaires

  1. [RegEx] Quel pattern pour supprimer les derniers <br> d'une string?
    Par rekam dans le forum Langage
    R�ponses: 4
    Dernier message: 04/11/2012, 00h55
  2. R�ponses: 3
    Dernier message: 04/02/2012, 09h03
  3. QUEL "include" POUR affichage du texte
    Par sali2801 dans le forum C
    R�ponses: 7
    Dernier message: 12/03/2011, 12h31
  4. R�ponses: 0
    Dernier message: 16/09/2008, 11h49
  5. Quel outil pour du d�veloppement Client/Serveur (Win XP) ?
    Par jey_bonnet dans le forum D�bats sur le d�veloppement - Le Best Of
    R�ponses: 5
    Dernier message: 02/11/2002, 14h57

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