Dauerberechnung mit Anzeige in hh,mm



  • Hallo,

    ich habe ein kleines Problem beim Programmieren mit C++.
    Ich habe in meinem Programm ein Edit Feld in dem ein Datum und Zeitwert steht.
    Nun möchte ich durch klicken eines Buttons die Differenz zwischen der Zeit die im Edit Feld steht und dar aktuellen Zeit angezeigt bekommen. Ich habe dafür auch schon ein Quellcode geschrieben aber leider bin ich damit noch nicht 100%ig zufrieden

    TDateTime dttime =StrToDateTime(Edit1->Text);
    int iCountdown = (int)(TDateTime(TDateTime::CurrentDateTime() - dttime.Val).Val*24*60*60);
    
    int Tage, Std, Min , Sek; 
    Sek = iCountdown % 60; 
    iCountdown -= Sek; 
    iCountdown /= 60; 
    Min = (iCountdown) % 60; 
    iCountdown -= Min; 
    iCountdown /= 60; 
    Std = (iCountdown) % 24; 
    iCountdown -= Std; 
    iCountdown /= 24; 
    Tage = (iCountdown); 
    
    Edit2->Text=Tag*24+Std;
    

    Soweit funktioniert auch das Programm. Wenn ich z.B. im Edit1 den Wert 28.08.2006 07:08:01 stehen habe und wir hätten jetzt 30.08.2006 08:16:34 dann würde im meinem Edit2 25 stehen. Nur möchte ich nicht nur die volle Stundenanzahl angezeigt bekommen sondern auch die Minuten hinter einem Komma. Also z.B. 25,08. Hierbei spielt es aber bei mir keine Rolle ob die Zahl hinter dem Komma nur bis 60 oder bis 100 gezählt wird.



  • warum so umständlich? 😉

    TDateTime dttime =StrToDateTime(Edit1->Text);
    double diff = Now()-dttime; //liefert einen Werte in Tagen und hinter dem Komma den Stundenanteil
    double stunden = diff * 24; 
    Edit2->Text = FloatToStr(stunden);
    


  • Danke. Klappt wirklich prima.
    Nur wie runde ich das ganz auf zwei Stellen hinter dem Komma???



  • Hallo

    mit der Funktion FloatToStrF

    bis bald
    akari



  • Also an Stelle von "Edit2->Text = FloatToStr(stunden);" "Edit2->Text = FloatToStrF(stunden); " schreiben?

    Geht aber bei mir leider nicht, bekomme die Fehlermeldung "zu wenige Parameter"



  • Hallo

    Dann schau dir die von mir genannte Funktion doch mal in der BCB-Hilfe an, inbesondere deren Parameter.

    bis bald
    akari



  • Blick in der Hilfe nicht ganz durch. Was muss ich ganua machen damit es geht?



  • Hallo

    AnsiString Buffer = FloatToStrF(10.123, ffFixed, 7, 2);
    

    Diese Zeile gibt dir den Float-Wert gerundet auf 7 Stellen und mit 2 Nachkommastellen zurück

    bis bald
    akari


Anmelden zum Antworten