Ist eine Minute schon vorbei ???



  • Sorry, aber deine Antwort hilft mir nicht sehr weiter ! Den einzigen Zeiger den ich sehe ist der von GetDlgItem 😃

    Das gibt es doch nicht, Ich sehe den Wald vor lauter Bäumen nicht 😡



  • Wenn du einen INT brauc hst mit dem du Rechnen kannst aber nur einen CString hast dann wandle den CString in INT um. Stichwort

    atoi(CString);

    Und bitte jetzt nicht das ergebnis mit = dem CString zuweisen.
    Dafür gibt es Format()



  • Ich hab das jetzt so geschrieben, aber es erscheint immer beim Ausführen ein Fehler :

    case ID_CALC_TIMER :
    		CString calc2;
    		calc2.Format(atoi(m_calc) + atoi(m_mon));
    		GetDlgItem(IDC_CALC)->SetWindowText(calc2);	
    		break;
    

    Was mache ich falsch ?

    Danke
    :: NoName ::



  • Du must folgendes verwenden:

    calc2.Format(_T("%d"), atoi(m_calc) + atoi(m_mon));
    

    Einen Blick in die MSDN darf man ruhig auch mal werfen...



  • Danke, hab das problem schon selber gelöst. Doch er rechnet die beiden Zahlen immernoch nicht zusammen ! Er gibt jetzt nur eine 0 aus ...



  • Hast du schon im debugger geschaut, wie der Inhalt der beiden Variablen aussieht?

    Was liefert atoi zurück?

    Teste mal so

    int v1 = atoi(m_calc);
    int v2 = atoi(m_mon);
    calc2.Format(_T("%d"), v1 + v2);
    


  • Ist ein INT also

    calc2.Format(_T("%i"), v1 + v2);
    

    Wenn etwas falschesa rauskommt solltest du mal schauen was in den CStrings drinsteht.

    Dieser Code ist jedenfalls so richtig.



  • Also, es hat immernoch nicht geklappt. Ich habe m_mon und m_calc überprüft.
    In m_mon und m_calc sind die richtigen Zahlen enthalten. Aber merkwürdig ist, dass in atoi(m_calc) und atoi(m_mon) nur jeweils eine 0 entahlten ist ! Egal wie ich es schreibe, ob Format oder nicht, ob "%d" oder "%i", es steht immer nur eine 0 in beide Variablen ! Und wenn ich es wie am Anfang schreibe :
    m_mon + m_calc dann rechnet er die beiden Zahlen, die in den Variablen enthalten sind, nicht zusammen, sondern er schreibt dann 1,20 1,30 anstatt 2,50 ... Könnte es daran liegen, dass m_mon eine Edit-Box und m_calc ein Static-Text ist ??? An irgendetwas muss es ja liegen...



  • Also, es hat immernoch nicht geklappt. Ich habe m_mon und m_calc überprüft.
    In m_mon und m_calc sind die richtigen Zahlen enthalten. Aber merkwürdig ist, dass in atoi(m_calc) und atoi(m_mon) nur jeweils eine 0 entahlten ist ! Egal wie ich es schreibe, ob Format oder nicht, ob "%d" oder "%i", es steht immer nur eine 0 in beide Variablen ! Und wenn ich es wie am Anfang schreibe :
    m_mon + m_calc dann rechnet er die beiden Zahlen, die in den Variablen enthalten sind, nicht zusammen, sondern er schreibt dann 1,20 1,30 anstatt 2,50 ... Könnte es daran liegen, dass m_mon eine Edit-Box und m_calc ein Static-Text ist ??? Oder liegt es daran, dass ich Zahlen mit Kommatas verwende ??? An irgendetwas muss es ja liegen...



  • Es scheint das du Fließkommazahlen in deinen strings hast!
    Dann geht das natürlich nicht. Benutze stattdessen folgendes

    calc2.Format(_T("%.2f"), atof(m_calc) + atof(m_mon));
    

    atof = ascii to float

    %.2f = float format mit 2 Nachkommstallen



  • Wie soll ich das denn nun schreiben ??? CString`s addiert er nicht...Und mit dem ClassWizard kann ich keine int`s (etc.) erzeugen nur CString`s...

    Ntürlich geht das!! Ist das ein Steuerelement?(Wo du m_calc einliest?)



  • Jetzt gibt er als Ergebnis 0,00 aus...



  • Zeig mal den ganzen Sourcecode und sag und genau was vor dem atoi in der Variable steht.
    Der Code funktioniert so wenn du auch eine Zahl in den CStrings hast.
    Bei INT eine INT Zahl oder bei double eine Fließkommazahl.

    Eine Fließkommazahl braucht aber einen Punkt: 12.23 und nicht 12,23



  • Stimmt, es lag daran, dass in m_mon und m_calc eine Zahl mit einem Komma und keinen Punkt enthalten war ! Sorry und danke für alles !!! Jetzt funtzt es 😃


Anmelden zum Antworten