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 Wert

    Und 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...


Anmelden zum Antworten