Addition gibt nur Müll aus
-
Hi,
ich versuche gerade die Zahlen aus zwei Editfeldern zu addieren aber es kommen nur komische Zahlen raus es liegt irgendwie sicher am umwandelen oder so:
static HWND hwndEdit[2]; static HWND hwndButton; static iLength[2]; static LPTSTR pszText[2]; static int zahlen[2]; static int ergebnis=0; switch(message) { case WM_CREATE: //usw. case WM_COMMAND: if(LOWORD(wParam) == ID_BUTTON2) { for(int i=0;i<2;i++) { iLength[i] = GetWindowTextLength(hwndEdit[i]); pszText[i] = new TCHAR[iLength[i]]; GetWindowText(hwndEdit[i],pszText[i],iLength[i]); zahlen[i] = atoi(pszText[i]); ergebnis+=zahlen[i]; } TCHAR szBuffer[16]; wsprintf(szBuffer, TEXT("%i"), ergebnis); MessageBox(NULL,szBuffer,TEXT("Ergebnis"),NULL); }
-
Länge des Strings = Länge des Texts + abschliessende \0, d.h. iLength muss um 1 grösser sein als GetWindowTextLength zurückliefert.
-
Vielleicht könntest du auch einfach GetDlgItemInt verwenden
-
Original erstellt von RenéG:
Länge des Strings = Länge des Texts + abschliessende \0, d.h. iLength muss um 1 grösser sein als GetWindowTextLength zurückliefert.Jo cool thx das war schonmal ein Fehler hab es jetzt so geändert:
iLength[i] = GetWindowTextLength(hwndEdit[i])+1;
aber das richtige Ergebnis zeigt er immer noch nicht an.
-
Kann es sein, dass er bei der ersten Addition immer das richtige Ergebnis liefert und danach immer zu große?
-
Original erstellt von D@niel $chumann:
Kann es sein, dass er bei der ersten Addition immer das richtige Ergebnis liefert und danach immer zu große?Bei mir rechnet er immer willkürlich.
-
Schau mal...
for(int i=0;i<2;i++) { iLength[i] = GetWindowTextLength(hwndEdit[i]); pszText[i] = new TCHAR[iLength[i]]; GetWindowText(hwndEdit[i],pszText[i],iLength[i]); zahlen[i] = atoi(pszText[i]); ergebnis+=zahlen[i]; }
zahlen[0]=Inhalt aus hwndEdit[0]
zahlen[1]=Inhalt aus hwndEdit[1]
zahlen[2]= ??? Nicht initialisierter WertUnd Du rechnest
ergebnis = zahlen[0]+zahlen[1]+zahlen[2]
Du mußt Deine Schleife so ändern:
for(int i=0;i<1;i++)
[ Dieser Beitrag wurde am 27.06.2003 um 14:54 Uhr von Hepi editiert. ]
-
ähm - for(int i=0;i<2;i++) zählt doch nur von 0 bis 1 (i<2)
-
Autsch, ja stimmt... ich sollte mich mal schlafen legen... bin Hundemüde...