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 :

E2034 Impossible de convertir 'const char *' en 'const wchar_t *'


Sujet :

C++Builder

  1. #1
    Membre habitu�

    Homme Profil pro
    Responsable Informatique Industrielle
    Inscrit en
    Janvier 2009
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activit� : Responsable Informatique Industrielle
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 10
    Par d�faut E2034 Impossible de convertir 'const char *' en 'const wchar_t *'
    Si vous mettez � jour vos programmes vers CodeGear C++Borland 2009, vous trouverez peut �tre cette erreur :

    E2034 Impossible de convertir 'const char *' en 'const wchar_t *'

    Voici un exemple de code pour cette erreur :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Application->MessageBoxA(AnsiString("Impossible d'ouvrir le fichier "+AnsiString(nom)).c_str(),"erreur",MB_OK);
    Voici la correction :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    MessageBoxA(NULL,AnsiString("Impossible d'ouvrir le fichier "+AnsiString(nom)).c_str(),"erreur",MB_OK);
    La correction marche aussi pour MessageBox, l'astuce est de ne pas oublier NULL, et d'enlever Application->

    En esp�rant que cela aide d'autres personnes.

  2. #2
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    D�tails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par d�faut
    Si tu veux le m�me comportement il ne faut pas mettre NULL mais Application->Handle:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    MessageBoxA(Application->Handle,AnsiString("Impossible d'ouvrir le fichier "+AnsiString(nom)).c_str(),"erreur",MB_OK);
    Si tu veux que ton programme soit un peu plus Unicode il faut utiliser:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
        String nom;
        MessageBoxW(Application->Handle,String("Impossible d'ouvrir le fichier "+nom).w_str(),L"erreur",MB_OK);
    Par d�faut String = UnicodeString dans CodeGear C++Borland 2009
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    #if defined(_DELPHI_STRING_UNICODE)
        typedef UnicodeString        String;           //
    #else
        typedef AnsiString           String;           //
    #endif

  3. #3
    Membre habitu�

    Homme Profil pro
    Responsable Informatique Industrielle
    Inscrit en
    Janvier 2009
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activit� : Responsable Informatique Industrielle
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 10
    Par d�faut merci
    merci pour le compl�ment d'informations

  4. #4
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    D�tails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par d�faut Utilisation de MessageBoxIndirect sous C++Builder
    Une autre fa�on de faire afficher un Message Box est d'utiliser MessageBoxIndirect. L'avantage est que l'on peut mettre un ic�ne personnalis�. Voici un exemple simple avec un ic�ne standard:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    TMsgBoxParams BoxParam;
    BoxParam.cbSize = sizeof(TMsgBoxParams);
    BoxParam.hwndOwner = Application->Handle;
    BoxParam.hInstance = NULL; // Set to NULL for standard system-defined icons
    BoxParam.lpszText = L"Impossible d'ouvrir le fichier.";
    BoxParam.lpszCaption = L"Erreur";
    BoxParam.dwStyle = MB_OK | MB_USERICON; // MB_USERICON is needed for using lpszIcon
    BoxParam.lpszIcon = MAKEINTRESOURCEW(IDI_ERROR);
    BoxParam.dwContextHelpId = 0;
    BoxParam.lpfnMsgBoxCallback = NULL;
    BoxParam.dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT);
    MessageBoxIndirectW(&BoxParam);
    Voici la liste des ic�nes standards:
    • IDI_APPLICATION: Default application icon.
    • IDI_ASTERISK: Same as IDI_INFORMATION.
    • IDI_ERROR: Hand-shaped icon.
    • IDI_EXCLAMATION: Same as IDI_WARNING.
    • IDI_HAND: Same as IDI_ERROR.
    • IDI_INFORMATION: Asterisk icon.
    • IDI_QUESTION: Question mark icon.
    • IDI_WARNING: Exclamation point icon.
    • IDI_WINLOGO: Windows logo icon. Windows XP: Default application icon.
    • IDI_SHIELD: Security Shield icon.


    Pour utiliser la version ANSI il suffit d'enlever les W � la fin des fonctions et de mettre du texte sans le L devant.

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

Discussions similaires

  1. R�ponses: 9
    Dernier message: 04/01/2011, 07h34
  2. R�ponses: 12
    Dernier message: 03/09/2009, 03h06
  3. convertir un ansistring en const char*
    Par Freud44 dans le forum D�buter
    R�ponses: 13
    Dernier message: 13/11/2008, 17h59
  4. Convertir un (char *) en (const char *) dans C++
    Par anas.eh dans le forum C++
    R�ponses: 10
    Dernier message: 03/09/2007, 13h59
  5. Convertir un "char" en "CONST char"
    Par N3odyme dans le forum C
    R�ponses: 3
    Dernier message: 17/08/2006, 19h48

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