Nächste Fehlermeldung in Builder 2009



  • Hallo zusammen,

    ich habe direkt das nächste Problem: Bei folgendem Code

    AnsiString msg;
    msg = "Hallo";
    Application->MessageBox(msg.c_str(), "Fehler", MB_OK + MB_ICONERROR);
    

    bekomme ich im C++ Builder 2009 die Fehlermeldung:

    [BCC32 Fehler] Misc.cpp(81): E2034 Konvertierung von 'char *' nach 'const wchar_t *' nicht möglich

    zu der Application->... Zeile, wie kann ich die umgehen?.

    Gibt es eigentlich irgendwo eine Beschreibung, was man tun muss wenn man von BDS2006 nach Builder 2009 konvertieren will?

    Gruss
    Lodo2609



  • MessageBox verlangt UnicodeString.

    Application->MessageBox( UnicodeString(msg).w_str(), UnicodeString("Fehler").w_str(), MB_OK + MB_ICONERROR);
    

    grüssle 🙂



  • Smitty schrieb:

    MessageBox verlangt UnicodeString.

    Application->MessageBox( UnicodeString(msg).w_str(), UnicodeString("Fehler").w_str(), MB_OK + MB_ICONERROR);
    

    Wenn der Code auch mit früheren C++Builder-Versionen kompilieren soll, wäre es ratsam, das Typedef String anstelle von UnicodeString zu benutzen.
    Zudem kannst du Stringliterale auch in _T() wrappen (ggf. tchar.h einbinden), dann werden sie, abhängig von der TCHAR-Mapping-Projektoption, zu wide- oder narrow-Literalen.
    Weiterhin verhält sich UnicodeString::c_str() seit Update 1 wieder erwartungsgemäß, so daß du es zwecks Einheitlichkeit benutzen kannst.

    Flag-Parameter, die an WinAPI-Funktionen übergeben werden, sollten übrigens nicht mit +, sondern mit | kombiniert werden, da manche Konstanten mehrere Flags kombinieren.

    Application->MessageBox (String (msg).c_str (), _T ("Fehler"), MB_OK | MB_ICONERROR);
    

Anmelden zum Antworten