Ergebnis einer Berechnung in MessageBox



  • Ich habe als C++ Anfänger folgendes Problem.

    Ich möchte zwei Eingabefelder zusammenrechnen und
    das Ergebnis in einer Messagebox oder in einem
    weiteren Eingabefeld ausgeben.

    Die Variablen sind vom Typ INT (Integer)

    Hier mein Code

    // Nachrichtenvariable mit Benutzereingabe aktualisieren 
    UpdateData(TRUE); 
    
    // Ergebnis anzeigen 
    m_wert3=m_wert1+m_wert2; 
    MessageBox (m_wert3);
    

    Hier die Fehlermeldung ...
    ...\ctest3Dlg.cpp(190) : error C2664: 'MessageBoxA' : Konvertierung des Parameters 1 von 'int' in 'const char *' nicht moeglich
    Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    Fehler beim Ausführen von cl.exe.

    Was mache ich falsch ???



  • Die Messagebox erwartet, daß du ihr einen Text (als String) zur Verfügung stellst, und keine Integer-Zahl. Am besten schaust du mal in die C++-FAQ, um eine Möglichkeit zu finden, deine Zahl in einen String umzuwandeln.

    (PS: Unter MFC bietet sich dafür CString::Format() an)



  • Danke für die schnelle Antwort.

    OK, ich verstehe zwar nicht warum in C++ die Messagebox einen
    String benötigt, aber sei es drum.

    Die Frage ist aber wie kann ich das Ergebnis in einer dritten
    Eingabebox ausgeben. Ist auch in diesem Fall eine Umwandlung
    nötig ???



  • c-starter schrieb:

    OK, ich verstehe zwar nicht warum in C++ die Messagebox einen
    String benötigt,

    Ganz einfach. Weil es sehr, sehr viele Möglichkeiten gibt, eine Zahl als Text darzustellen. Diese Information ist nicht vorhanden, wenn du nur den Wert angibst. Darum ist es deine Aufgabe, den Wert in der gewünschten Darstellung in Textform zu bringen.



  • Warum eine MessageBox eine String benötigt musst du Microsoft fragen.
    Ich verstehe ja auch nicht wieso du 2 Eingabefelder berechnen willst.
    Es ist eben so definiert. Bevor man zum Programmieren anfängt sollte man mal die Grundkenntnisse lernen.
    Eine davon ist: Rufe nie eine Funktion mit Parametertypen auf obwohl die Funktion andere erwartet.

    z.B. auszug aus der MSDN:

    int MessageBox(
    LPCTSTR lpszText,
    LPCTSTR lpszCaption = NULL,
    UINT nType = MB_OK
    );

    Hier wird ein LPCTSTR erwartet und kein INT.



  • // Nachrichtenvariable mit Benutzereingabe aktualisieren
    UpdateData(TRUE);
    
    CString str;
    
    // Ergebnis anzeigen
    m_wert3=m_wert1+m_wert2;
    
    str.Format("%i", m_wert3); // Kopiert den Integer in den String
    MessageBox (str);
    

    Ich hoffe deine Member-Variable heißen im Projekt nicht m_wert1-3!



  • Danke "Konkret". Das sieht sehr gut aus.

    Übrigens Unix-Tom, ich habe mehrere Jahre VB Erfahrung.
    Also ganz ohne Grundwissen geht das auch nicht.

    Allerdings muss ich zugeben das die Programmierung unter
    C++ wesentlich schwieriger zu sein scheint.

    Danke für die Hilfe an alle.


Anmelden zum Antworten