3tiXoz Geschrieben 24. August 2010 Geschrieben 24. August 2010 Hi, ich hoffe die Überschrift war richtig gewählt^^ Mein Problem: ich habe ein Label und eine Editbox. In dem Label steht eine Zahl (zB 200) und in die Editbox kann man irgendeine Zahl eingeben. Nun soll die eingegebene Zahl von der Labelzahl subtrahiert werden und das neue Ergebniss soll in das Label geschrieben werden. Für die Berechnung muss ich jedoch beides in int's konvertieren und danach wieder in ein char um es in das Label zu schreiben. switch (wParam) { // Wurde Submit angeklickt? case ID_SUBMIT: { // Berechnung für Punktzahl char szUzahl[200]; // Zahl die im Label steht char szInZahl[200];//Eingegebene Zahl char szErgebniss[200]; int InZahl = 0; int Uzahl = 0; int Ergebniss = 0; // Zahl aus dem Label holen (hPoints) und in szUzahl speichern GetWindowText (hPoints, szUzahl, 200); // Das selbe mit der eingegebenen Zahl GetWindowText (hPktBox, szInZahl, 200); // Beide chars in int umwandeln, berechnen und in int Ergebniss speichern InZahl = atoi(szUzahl); Uzahl = atoi(szUzahl); Ergebniss = Uzahl - InZahl; // Dann wieder konvertieren um es mit SetWindowText auszugeben itoa(Ergebniss, szErgebniss, 200); SetWindowText (hPktBox, szErgebniss); return (0); } Wenn ich jetzt jedoch eine Zahl in die Box schreibe und den Button "Submit" klicke kommt nicht das Ergebniss in das Label sondern immer 0. Wo ist jetzt das Problem? In der Berechnung? Denn ohne funktioniert es super. Bsp. ich schreibe die 2 in die Box und klcike Submit. In dem Label erscheint die 2. Wenn ich es mit rechnung mache erscheint jedoch immer nur die 0^^ Hoffe ihr könnt mir helfen. Gruss 3tiXoz Zitieren
Klotzkopp Geschrieben 25. August 2010 Geschrieben 25. August 2010 Du berechnest InZahl und Uzahl beide aus szUzahl. Dann kann bei der Subtraktion ja nur 0 herauskommen Zitieren
3tiXoz Geschrieben 25. August 2010 Autor Geschrieben 25. August 2010 Du berechnest InZahl und Uzahl beide aus szUzahl. Dann kann bei der Subtraktion ja nur 0 herauskommen Hey, Ups. Ja stimmt xD Habs jetzt geändert: // Beide chars in int umwandeln, berechnen und in int Ergebniss speichern InZahl = atoi(szInZahl); Uzahl = atoi(szUzahl); Ergebniss = Uzahl - InZahl; // Dann wieder konvertieren um es mit SetWindowText auszugeben itoa(Ergebniss, szErgebniss, 200); SetWindowText (hPktBox, szErgebniss); return (0); Allerdings sind die Ergebnisse die ich jetzt bekomme ganz verrückt^^ Manchmal wird das Ergebniss auch nur als irgendwelche Zeichen ausgegeben^^ Bsp: 200 - 3 = ''*#####2 o.ä.^^ Gruss 3tiXoz Zitieren
3tiXoz Geschrieben 25. August 2010 Autor Geschrieben 25. August 2010 So hab noch einen Fehler gefunden und zwar hab ich die Werte aus den falschen Childs eingelesen^^ Aber trotzdem wird mir mein Ergebniss nicht richtig angezeigt. Wenn zB in dem Label 501 steht und ich tippe 2 ein und klicke submit, dann kommt nicht die 499 im Label sonfern J^^ :confused: Weiss jetzt garnich wo der fehler sein kann. Höchstens dann vllt in der "Re"Konvertierung mit itoa. Weiss einer von euch vllt eine lösung? Weil ich muss das ja als char in das Child per SetWindowText() setzen und kann das Ergebniss ja nicht in int lassen?! Gruss 3tiXoz Zitieren
Klotzkopp Geschrieben 25. August 2010 Geschrieben 25. August 2010 Der dritte Parameter von itoa ist nicht die Größe des Stringpuffers, sondern die Basis des gewünschten Zahlensystems. Wenn im String die dezimale Repräsentation des Wertes stehen soll, muss da also eine 10 hin. Zitieren
3tiXoz Geschrieben 26. August 2010 Autor Geschrieben 26. August 2010 Der dritte Parameter von itoa ist nicht die Größe des Stringpuffers, sondern die Basis des gewünschten Zahlensystems. Wenn im String die dezimale Repräsentation des Wertes stehen soll, muss da also eine 10 hin. Super jetzt funktioniert es auch ^^ Dachte wirklich das der dritte Parameter für den Stringpuffer ist:upps Danke für die Hilfe, Problem ist damit gelöst^^ Gruss 3tiXoz Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.