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 Funktionsformatund 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-ControlSo 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
)