Zähler



  • folgendes bekomm ich nicght realisiert.

    ich möchte den button a drücken. nun zählt das proggi im hintergrund die sekunden. beim drücken auf den button 2 soll es aufhören zu zählen und die sekunden in ein eingabefeld ausgeben.

    ausgabeart: xx Std. xx Min. xx Sec.



  • Das alles steht doch in dem Tutorial was ich dir gegeben habe ...

    Gruß
    :: NoName ::



  • Hallo..

    Konfiguriere einen Timer,welcher Dir beim drücken von a jede Sekunde eine Nachricht sendet. Diese fängst Du dann in deiner App ab und erhöhst dabei immer einen Zähler um 1. Dies ergibt dann die Anzahl Sekunden. Diese kannst Du dann in die gewünschten Werte umrechnen und ausgeben, wenn Du b gedrückt hast.

    Ich glaube NoName hat Dir da mal schon n'Link gepostet, wie man das anstellt mit Timer und so....

    Gruz

    Danny



  • Wofür ein Timer!
    Zitat: Zählt im Hintergrund die Sekunden.

    Einfach beim start die Zeit auslesen und speicher. Be Ende wieder die Zeit auslesen und dann Rechnen. Ende - Beginn = Diff.

    Diese dann anzeigen.



  • genau so will ichs haben. nur wie ? 👍



  • bin ja noch blutiger anfänger.

    was ist falsch ?

    void CMaussimulationDlg::OnOK() 
    {
    
    	// Startzeit
    	CString Time; 
    	CTime m_tTime = CTime::GetCurrentTime(); 
    	Time = m_tTime.Format("%H:%M:%S"); 
    	m_Time_Start = Time;
    	UpdateData(false);
    	// Startzeit Ende
    
    }
    
    void CMaussimulationDlg::OnBStop() 
    {
    
    	// Laufzeit
    
    	CString TimeStop; 
    	CTime m_tTime = CTime::GetCurrentTime(); 
    	TimeStop = m_tTime.Format("%H:%M:%S");
    
    	UpdateData(true);
    
    	CString Time;
    	Time = m_Time_Start;
    	m_Time_Lauf = Time - TimeStop;
    
    	UpdateData(false);
    	// Laufzeit Ende
    
    }
    


  • ich denke mit folgenden Stichworten solltest du das hinbekommen

    // global
    CTime t1;
    CTimeSpan ts;
    //beim start
    t1 = CTime::GetCurrentTime(); 
    //beim stop    
    ts = CTime::GetCurrentTime() - t1; 
    int sekunden = ts.GetTotalSeconds();
    

    Greez 😃
    PS:

    m_Time_Lauf = Time - TimeStop;

    Ich hab die Erfahrung gemacht, das beim Addieren und Subtrahieren von Strings selten was vernünftiges bei rum kommt... 😃



  • Ich möchte ja nichts sagen, aber warum verwendest du immer UpdateData? Wenn es nichts aus "Boxen" zu holen gibt oder zum "reinschreiben" gibt, dann lass bitte das Updatedata weg.

    Welchen Typ hat eigentlich m_Time_Start? Ein CString? Wenn ja, warum hast du dann noch CString Time gemacht?

    Dann hast du noch keine Ausgabezeile geschrieben, das es in einer Box oder so angezeigt werden soll.

    Dann hast du noch "Starttime - Stoptime" gemacht. Aber ich frag dich jetzt auch was. Wieviel ist "Afgv - rtodk"??? Was ich damit sagen will, man kann nicht einfach einen "ZEIT"-CString voneinander abziehen! Der PC sieht das nur als n String an. Der hat keine Ahnung das es eine zeit sein soll welche er dann abziehen kann.

    Am besten du verwendest die SUCHE-Funktion hier im Forum nach CTime. Da findest du genügend Leute die auch CString einfach abziehen wollten. Dann findest du auch die Lösung.

    PS: Viel Erfolg



  • Abgesehen von dem ganzen bringt es dir nichts Lokale Variablen zu definieren. Wenn du den Button drückst wird diese zwar richtig gefüllt GetCurrentTime() aber beim beenden der Funktion wieder gelöscht. Lege sie also als Member der Klasse an.

    CTime m_start;

    In der Funktion start

    m_start = CTime::GetCurrentTime();

    In der Funktion stop

    CTime stop = CTime::GetCurrentTime();

    CTimeSpan elapsedTime = stop - m_start;
    int sekunden = elapsedTime.GetTotalSeconds();


Anmelden zum Antworten