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);