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 :

MessageBox et C++Builder 2009


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    481
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 481
    Par d�faut MessageBox et C++Builder 2009
    Bonjour,
    j'ai d�couvert un probl�me avec le composant de la VCL MessageBox.
    J'ai un programme qui a �t� compil� avec BDS2007. Il comporte la ligne :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Application->MessageBox("Erreur sur l'heure", "Corriger l'heure", MB_OK);
    Le fichiert d'aide de C++Builder 2009 donne :
    __fastcall int MessageBox(const const char * Text, const const char * Caption, Longint Flags = MB_OK);

    Or lorsque je veux recompiler le projet j'obtiens une erreur disant pour cette ligne :
    [BCC32 Erreur] ExifU.cpp(501): E2034 Impossible de convertir 'const char *' en 'const wchar_t *'
    [BCC32 Erreur] ExifU.cpp(501): E2342 Mauvaise correspondance de type dans le param�tre 'Text' ('const wchar_t *' d�sir�, 'const char *' obtenu)

    Si je remplace le MessageBox() par ShowMessage, cela fonctionne.
    Mais j'aimerais comprendre pourquoi il y a ces messges d'erreur et comment �crire maintenant un MessageBox();

    Si quelqu'un a une id�e, je suis preneur.
    D'avance merci.

  2. #2
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Salut,
    ceci est du au fait que BCB 2009 est pass� � l'unicode, il faut que tu caste tes chaine en WideString :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Application->MessageBox(WideString("Erreur sur l'heure"), WideString("Corriger l'heure"), MB_OK);

  3. #3
    Membre �clair�
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    481
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 481
    Par d�faut
    Merci,
    j'ai �crit :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    	Application->MessageBox(WideString("Erreur sur les secondes"),
    		WideString("Corriger les secondes"), MB_OK);
    et j'ai, encore les messages d'erreur :
    [BCC32 Erreur] ExifU.cpp(508): E2034 Impossible de convertir 'WideString' en 'const wchar_t *'
    [BCC32 Erreur] ExifU.cpp(508): E2342 Mauvaise correspondance de type dans le param�tre 'Text' ('const wchar_t *' d�sir�, 'WideString' obtenu)
    Ces messages semblent ne porter que sur la deuxi�me ligne.

    Comment cr�er une chaine qui serait un wchar_t ?
    Merci

  4. #4
    Membre actif

    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2007
    Messages
    93
    D�tails du profil
    Informations personnelles :
    �ge : 37
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 93
    Billets dans le blog
    1
    Par d�faut
    WideString, est une methode pour construie un unicodestring, pour pouvoir utiliser cet UnicodeString, il faut utiliser .c_bstr(), qui le transforme en pointeur de Widechar
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    Application->MessageBox(WideString("Erreur sur les secondes").c_bstr() ,
            WideString("Corriger les secondes").c_bstr(), MB_OK);
    test� sous BCB 2009, sans aucune erreur

  5. #5
    Membre �clair�
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    481
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 481
    Par d�faut
    C'est parfait.
    Cela marche tr�s bien.

    Merci encore

  6. #6
    Membre actif

    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2007
    Messages
    93
    D�tails du profil
    Informations personnelles :
    �ge : 37
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 93
    Billets dans le blog
    1
    Par d�faut
    n'oublie pas de mettre r�solu

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

Discussions similaires

  1. Que penser de C++Builder 2009 ?
    Par armadio dans le forum C++Builder
    R�ponses: 9
    Dernier message: 17/07/2009, 10h55
  2. Exemple UnicodeString Builder 2009
    Par devroot dans le forum C++Builder
    R�ponses: 11
    Dernier message: 14/11/2008, 11h21
  3. Probl�me installation C++ Builder 2009
    Par Clopinet85 dans le forum C++Builder
    R�ponses: 2
    Dernier message: 09/10/2008, 16h17

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