ausführliche Fehlermeldung schreiben: eleganter Weg?



  • Hi!

    Ich möchte in meinem Programm ausführliche Fehlermeldungen einfügen.

    Bis jetzt habe ich immer folgendes verwendet.

    char* error_msg = "sehr kurze Beschreibung"; 
    int i = MessageBox(NULL, error_msg, _T("Fehler"), 0x03 | MB_ICONINFORMATION);
    

    Jetzt will ich aber viel mehr reinpacken
    z.B.

    101 015 351 hat folgenden Fehler verursacht: 156 485 324

    Es wurde kein gültiges irgentwas gemacht.

    Wählen Sie ein gültiges irgentwas und führen Sie den Befehl noch einmal aus.

    ➡ Gibt es einen eleganteren Weg als ein ewig langes char* mit vielen \n zu erstellen?
    ➡ Wenn nicht, gibt es einen Befehl, der 2 char* zussammenzufügt oder muss ich das selbst schreiben?

    Edit:

    p.s.: meine Funktionen geben bereits diese Zahlen zurrück (z.B.101 354 458), jetzt gilt es diese auszuwerten und auszugeben.



  • Entweder bist du im falschen Forum weil du nur "normales" C++ programmierst und kein C++/CLI oder du benutzt auch die in .Net gegebenen Möglichkeiten welche in dem Fall Exceptions wären, um Fehlerbehandlung durchzuführen.



  • ich nutze Microsoft Visual Studio .NET 2003

    Das mit Exceptions klingt interessant, danke für den Vorschlag.
    Jetzt habe ich ein besseres Wort als "Fehlermeldung" zum googeln ^^

    Edit:
    Danke, der Hinweis war ziemlich interessant.
    Leider weis ich jedoch immer noch nicht wie ein Profi eine so lange, ausführliche Beschreibung in die MessageBox bekommt.
    Darum steht die Frage noch:

    ➡ Ist es eine elegante Lösung einen ewig langen char* zu generieren und ihn dann per MessageBox anzuzeigen?



  • www.pat schrieb:

    ➡ Gibt es einen eleganteren Weg als ein ewig langes char* mit vielen \n zu erstellen?

    Nicht wirklich. Du könntest dir höchstens eine eigene Dialogklasse für Fehlermeldungen anlegen und nach eigenem Bedarf zusammenbauen.

    ➡ Wenn nicht, gibt es einen Befehl, der 2 char* zussammenzufügt oder muss ich das selbst schreiben?

    strcat() (aber besser ist es imho, mit std::string und Konsorten zu arbeiten und erst am Ende dort die char* rauszuholen)



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hi!

    bei mir hat sich ein neues Problem aufgetan:

    wenn ich die Zahl -001.002.003 übergebe (Punkte nur zum leichteren Lesen eingefügt)

    int i = -001002003;
    meine_funktion(i);
    

    kommt eine komplett andere Zahl an: -262.658

    Wenn ich die 2 Nullen am Anfang vermeide (also 1.002.003 oder 901.002.003) stimmts.
    Wenn ich -001 übergebe stimmts auch.
    Bei -001.002 stimmts wieder nicht, da bekomme ich -514;

    Kann mir bitte jemand sagen warum das so ist?
    Warum beeinflussed diese 2 Nullen den Wert so sehr?



  • Hallo

    Ich habe mal gehört: Bei Zahlen mit den man nicht rechnet, sollte man besser strings statt ints nehmen.

    chrische



  • www.pat schrieb:

    Warum beeinflussed diese 2 Nullen den Wert so sehr?

    Führende Nullen machen das Literal zu einer Oktalzahl, z.B. 0100 = 64.



  • aaaah, vielen herzlichen Dank!


Anmelden zum Antworten