Falsche Addition / Berechnung aktualisieren



  • Hallo Community.
    Ich habe drei Fragen.

    1. Frage:
    Ich arbeite an einem kleinen Script, das unter anderem auch die gearbeiteten Std. der einzelnen Wochentage zusammenaddieren soll.
    Problem: Mal addiert er richtig und mal nicht. 😞 Keine Ahnung woran das liegt

    2. Frage:
    Er schafft es nicht, auch Kommazahlen zu addieren bzw. das Ergebnis auch in Kommazahlen zu zeigen.

    3. Frage:
    Wenn ich mein Programm öffne und ich den Button "Gesamtstd" drücke, lädt er das Ergebnis in das Feld IDC_Edit11! So aber wenn ich nun die Eingaben ändere und nochmal auf den Button klicke, aktualisiert er leider nicht das Ergebnis.

    Hier mein Code-Ausschnitt:

    void CANeditorDlg::OnBnClickedButton2()
    {
    	CEdit* std_mo = (CEdit*)GetDlgItem(IDC_EDIT6);   
    	CEdit* std_di = (CEdit*)GetDlgItem(IDC_EDIT7);   
    	CEdit* std_mi = (CEdit*)GetDlgItem(IDC_EDIT8);   
    	CEdit* std_do = (CEdit*)GetDlgItem(IDC_EDIT9);   
    	CEdit* std_fr = (CEdit*)GetDlgItem(IDC_EDIT10);  
    
    	CString s_stdmo, s_stddi, s_stdmi, s_stddo, s_stdfr;
    	std_mo->GetWindowText(s_stdmo); const int i_Mo = atoi(s_stdmo);
    	std_mo->GetWindowText(s_stddi);	const int i_Di = atoi(s_stddi); 
    	std_mo->GetWindowText(s_stdmi);	const int i_Mi = atoi(s_stdmi); 
    	std_mo->GetWindowText(s_stddo);	const int i_Do = atoi(s_stddo); 
    	std_mo->GetWindowText(s_stdfr);	const int i_Fr = atoi(s_stdfr); 
    
    	const int gesamtstd = (i_Mo + i_Di + i_Mi + i_Do + i_Fr);
    
    	CString str;
    	str.Format("%i", gesamtstd); 
    
    	SetDlgItemText(IDC_EDIT11, str);
    }
    


  • Frage 3 hat sich erledigt.
    Aber über Antworten für die restlichen Fragen wäre ich dankbar.



  • cometi schrieb:

    Frage 3 hat sich erledigt.
    Aber über Antworten für die restlichen Fragen wäre ich dankbar.

    Frage 2 auch 😃
    Hatte überall std_mo-> drinne.
    Man was ist denn los mit mir 😃

    Denn ist nur noch Frage 2 zu klären



  • Cometi schrieb:

    Problem: Mal addiert er richtig und mal nicht. 😞 Keine Ahnung woran das liegt

    Was heißt das? Werd mal genauer.

    Übrigens solltest du deine Controls sinnvoll benennen. Wenn du irgendwann bei IDC_EDIT999 angelangt bist, möchte ich sehen, wie du da noch den Überblick behältst. 😉



  • Hallo,

    zu 2: wie soll das auch gehen, wenn du mit atoi alle eventuellen Kommazahlen zu Ganzzahlen (i wie Integer = Ganzzahl) machst?

    MfG,

    Probe-Nutzer



  • atoi=array-to-integer
    atof=array-to-float


  • Mod

    Ansonsten wäre der Codemit GetDlgItemInt weitaus einfacher (sofern es sich um Ganzzahlen dreht).



  • Hey danke.
    Hab nun float genommen.

    Aber nun zeigt er mir immer hinterm Komma noch ganz viele Nullen an.
    Kann man das auf zwei Stellen hinterm Komma runterschrauben?



  • cometi schrieb:

    Hey danke.
    Hab nun float genommen.

    Aber nun zeigt er mir immer hinterm Komma noch ganz viele Nullen an.
    Kann man das auf zwei Stellen hinterm Komma runterschrauben?

    str.Format("%.2f", gesamtstd);
    


  • Hallo,

    _matze schrieb:

    atoi=array-to-integer
    atof=array-to-float

    nö, a für ASCII.

    MfG,

    Probe-Nutzer



  • Sehr gut!
    Klappt alles wunderbar.
    An der Stelle: DANKE!

    Die Kommazahlen muss man ja nun mit Punkt eintragenalso
    8.5

    kann man das auch ändern, dass man die als Komma eintragen kann also
    8,5



  • cometi schrieb:

    Sehr gut!
    Klappt alles wunderbar.
    An der Stelle: DANKE!

    Die Kommazahlen muss man ja nun mit Punkt eintragenalso
    8.5

    kann man das auch ändern, dass man die als Komma eintragen kann also
    8,5

    Klar, mit

    #define , .
    

    😃

    Nee, bitte nicht machen! War nur 'n Witz...



  • Probe-Nutzer schrieb:

    Hallo,

    _matze schrieb:

    atoi=array-to-integer
    atof=array-to-float

    nö, a für ASCII.

    Hm, ok. Man liest im Internet manchmal auch array-to-integer...



  • Naja ist auch nicht ganz so wichtig.

    Aber ich mache es ja nun, dass die aktuelle Gesamtzahl immer per "Button"Betätigung ausgerechnet wird.

    Wie mache ich es, dass die Gesamtzahl automatisch immer im IDC_Edit11 angezeigt wird und sich auch selber zeitgleich aktualisiert wenn ich z.b. ne einzelne wochenzeit ändere?!



  • cometi schrieb:

    Wie mache ich es, dass die Gesamtzahl automatisch immer im IDC_Edit11 angezeigt wird und sich auch selber zeitgleich aktualisiert wenn ich z.b. ne einzelne wochenzeit ändere?!

    Das Berechnen kannst du doch direkt im Change-Ereignis der einzelnen Edit Controls auslösen. Jedesmal, wenn du eine Stundenanzahl änderst, rufst du die Funktion auf, die die Summe berechnet.


Anmelden zum Antworten