kleiner Multipikator (hilfe für Anfänger bitte)



  • Also folgendes hab mir zur aufgabe gesetzt ein kleines Programm zu schreiben, dass 2 zahlen multipliziert

    nur bekomme ich folgendes wenn ich die Zahlen aus den beiden fenstern rauslesen will ...

    index.cpp(193) : error C2664: 'GetWindowTextA' : Konvertierung des Parameters 2 von 'int [256]' in 'char *' nicht moeglich
            Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    

    und so schaut mein Code aus:

    case ID_BTN_UEBERNEHMEN:
            {
    			INT szText[256];
    			INT szText1[256];
    			INT szText2[256];
    
    			GetWindowText (hEditBox1, szText1, 256);
    			GetWindowText (hEditBox2, szText2, 256);
    
    				szText = szText1 * szText2;
    			SetWindowText (hText, szText);
    			SetWindowText (hEditBox1, "");
    			SetWindowText (hEditBox2, "");
              return (0);
    
            }
    

    Danke für eure hilfe!



  • so kann es ja auch nicht funktionieren, probier es mal so:

    case ID_BTN_UEBERNEHMEN:
        {
            int iFaktor1, iFaktor2;
            char szBuffer[1024];
            GetWindowText (hEditBox1, szBuffer, 1024);
            iFaktor1 = atoi(szBuffer);
            GetWindowText (hEditBox2, szBuffer, 1024);
            iFaktor2 = atoi(szBuffer);
            int iProdukt = iFaktor1 * iFaktor2;
            wsprintf(szBuffer, "%d", iProdukt);
            SetWindowText (hText, szBuffer);
            SetWindowText (hEditBox1, "");
            SetWindowText (hEditBox2, "");
        }
    

    dazu musst du aber am Anfang noch eine Header Datei einbinden:

    #include <cstdlib>
    

    dann sollte es gehen.



  • hmm ok danke schonmal aber kannste mir noch erlähren wasste da ez gemacht hast?

    Die 3 sachen:

    iFaktor1 = atoi(szBuffer);

    iFaktor2 = atoi(szBuffer);

    wsprintf(szBuffer, "%d", iProdukt);

    ach ja gibts irgendwo ne seite wo ich ne zusammenfassung finde für was ich welche headerdatei brauche? und für was steht diese Headerdatei?



  • also die Funktion atoi wandelt eine Zeichenkette in eine Ganzazhl (int) um.
    für Dezimalbrüche (float oder double) müsstest du atof nehmen.

    und wsprintf ist die Windows-Version von sprintf.
    sprintf stammt aus der cstdio und bedeutet String Print Formatted und dient
    der formatierten Ausgabe in eine Zeichkette.
    der Platzhalter %d sagt der Funktion, dass der nächste Parameter eine Ganzahl (int) ist.
    wenn du genauere Infos zu sprintf brauchst, rate ich dir in der MSDN nachzuschlagen.



  • Nochmal zu Deinem Fehler der in Deinem Code steckt:

    Diesen 'Weg' müssen die Daten, die der Benutzer in Deine Controls eingegeben hat, nehmen:

    Edit-Control -> Programmvariable(n) -> Edit-Control
    

    So und hier hast Du die Variablen-Typen:

    [b]C-String (char*)[/b] ->Umwandlung-> [b]Integer (int, long, ...)[/b]  ->Zurück-Umwandlung-> [b]C-String (char*)[/b]
    

    Dein 'Weg' sah aber so aus 😉 :

    ->[b]Integer (int, long, ...)[/b]->
    


  • Okay funktioniert!

    Vielen dank euch beiden! (werd euch wieder nerven wenn ich mir das nächste ziel setze 😉 )


Anmelden zum Antworten