try-catch Exception-Meldung ausgeben
-
catch (char *Fehlerstring)
{
// Fehler ausgeben
MessageBox(NULL,TEXT(Fehlerstring),NULL,NULL);
}error C2065: 'LFehlerstring' : undeclared indentifier
??? Was ist falsch?
-
Hm, das kann ich dir jetzt leider auch nicht sagen, mit dem VS 2003 funktioniert der Quellcode bei mir jedenfalls.
-
ich hab hier embedded VC++. Es muss aber auch hier ein weg gehen. ist ziemlich an VC++ anglehnt. halt für pocket pcs.
-
Gib doch einfach C2065 in den Such-Index deiner MSDN-Hilfe ein, da wird dir geholfen.

-
Diese UNICODE-Mappings sollte man nur bei String-Literalen verwenden - das ist falsch (in der ASCII-Version dürfte es klappen, in der UNICODE-Version gibt's Probleme). Verwend' lieber ein Konvertierungsmakro ala A2T().
-
also eVC++ brauch immer WideStrings um Nachrichten darstellen zu können (so wie wchar_t, TCHAR)
..aber wie muss nun der catch-block aussehen. allein mit wchar_t in klammern kann der compiler auch nix anfangen.
-
Etwa so:
int main () { USES_CONVERSION; int Version = 0; try { Version = 5; if (Version < 3) throw "Format veraltet, kann nicht gelesen werden"; if (Version > 3) throw "Unbekanntes Format"; } catch (char *Fehlerstring) { // Fehler ausgeben MessageBox(NULL,A2T(Fehlerstring),NULL,NULL); } return 0; }(A2T wandelt char-Strings in TCHAR-Strings um - USES_CONVERSION definiert dafür einige Hilfsvariablen)
-
Oder man benutzt gleich Wide-String Literale.
int main () { int Version = 0; try { Version = 5; if (Version < 3) throw L"Format veraltet, kann nicht gelesen werden"; if (Version > 3) throw L"Unbekanntes Format"; } catch (const wchar_t* Fehlerstring) { // Fehler ausgeben MessageBoxW(NULL, Fehlerstring, NULL, 0); } return 0; }
-
ok, folgende Compilermeldung kommt in eVC++:
error LNK2001: unresolved external symbol "const type_info::'vftable'" (??_7type_info@@6B@)kennt das wer?
-
ok da fehlte die ccrtrtti.lib als library
aber nun schmiert das programm beim aufruf der exception ab! keine ahnung warum.
(catch(...) scheint dagegen zu funktionieren)