GetWindowText zu Integer umwandeln!!!



  • Hallöchen.

    Ich will aus einer Editbox zahlen auslesen, um mit diesen dann weiterzuarbeiten.
    Ich kann die aber mit atoi nicht konvertieren. Ich habe jetzt folgenden Code:

    n = atoi(GetWindowText(hEditN, buffer[0],3));
    k = atoi(GetWindowText(hEditK, buffer[1],3));
    p = atof(GetWindowText(hEditP, buffer[2],3));
    

    Der Fehler ist invalid conversion from int to char.
    atoi verlangt ja eigentlich Zeiger, aber damit geht es auch nicht.

    Hat eventuell jemand einen Lösungsvorschlag???



  • Was soll deb "buffer" sein? Wenn es "buffer[3]" ist, dann sind die Aufrufe von GetWindowText falsch.
    Also mach bitte:

    TCHAR szBuffer[100];
    GetWindowText(hWnd, szBuffer, 100);
    

    Und dann kannst Du "szBuffer" umwandeln.



  • OK, hab das jetzt gemacht und bekomme keine Fehlermeldung mehr.
    Trotzdem ist das Ergebnis falsch:

    if (lParam == (LPARAM)hButtonSolve)
                {
                   if (HIWORD(wParam) == BN_CLICKED){
                         GetWindowText(hEditN, buffer1,3);
                         GetWindowText(hEditK, buffer2,3);
                         GetWindowText(hEditP, buffer3,3);
                         n = atoi(buffer1);
                         k = atoi(buffer2);
                         p = atof(buffer3);
                         sol = binomVT(n, k, p);
                         sprintf(solution, "%.4f" , sol);
                         SetWindowText(hEditSol, solution);
                   }    
                }
    

    Wenn man auf den Button klickt, soll er aus den 3 editfeldern über getwindowtext über float binomVT(int,int,float) was ausrechnen und in hEditSol anzeigen. Hier vielleicht nochmal die Deklaration der Variablen:

    char buffer1[4]={}, buffer2[4]={}, buffer3[4]={};
        static HWND hButtonEnd, hButtonSolve;
        static HWND hEditN, hEditK, hEditP, hEditSol;
        HDC hDc;
        static RECT rectN, rectK, rectP;
        PAINTSTRUCT ps;
        float sol;
        char solution[6];
        int n, k;
        float p;
    

    Sieht vielleicht jemand den Fehler?
    Wenn ich das Programm ausführe und den Button drücke, steht immer nur 1.0000 in dem Fenster, aber es sollte immer ne gebrochene Zahl zwischen 0 und 1 rauskommen.



  • OK sorry. Hat sich schon erledigt.
    Hab vergessen, dass die Länge des chars auch wieder bei getwindowtext beachtet werden muss.

    Danke für die Hilfe Jochen!!!


Anmelden zum Antworten