Countdown



  • Blackhawk schrieb:

    schau dir mal TimeToStr und StrToTime an!

    Hey danke für den tipp, bin jetzt viel weiter =).
    Ich weiß es nur nicht wie man immer eine sekunde abzieht 😞

    AnsiString a;
    a=StrToTime(BauzeitErzmine->Caption);
    a= //????????;
    
    BauzeitErzmine->Caption=TimeToStr(a);
    


  • Würde mir bitte jemand helfen? 😞



  • Rechne intern ausschliesslich mit Sekunden und wandele die Zahl nur für die Ausgabe in Stunden, Minuten und verbleibende Sekunden um.
    Am besten schreibst du dir dafür gleich eine Funktion, die die Sekunden als Integer entgegennimmt und als AnsiString im hh🇲🇲ss-Format zurückgibt, die kannst du dann universell einsetzen.



  • Jansen schrieb:

    Rechne intern ausschliesslich mit Sekunden und wandele die Zahl nur für die Ausgabe in Stunden, Minuten und verbleibende Sekunden um.
    Am besten schreibst du dir dafür gleich eine Funktion, die die Sekunden als Integer entgegennimmt und als AnsiString im hh🇲🇲ss-Format zurückgibt, die kannst du dann universell einsetzen.

    Wie schreibe ich eine Funktion, die die Sekunden als Integer entnimmt?
    wenn ich des hätte wär ich überglücklich 😃



  • [cpp]AnsiString TimeDisplay(int Seconds)
    {
    // hier dein Code, der Seconds zerlegt

    return Ergebnis;
    }

    Label1->Text = TimeDisplay(23641);[/cpp]



  • Jansen schrieb:

    [cpp]AnsiString TimeDisplay(int Seconds)
    {
    // hier dein Code, der Seconds zerlegt

    return Ergebnis;
    }

    Label1->Text = TimeDisplay(23641);[/cpp]

    Sorry aber ich verstehe das nicht, klingt jetzt vielleicht dämlich für ein profi wie dich, aber was das alles zu bedeuten hat, was ich jetzt einsetzen muss, wo ich das hinschreiben soll...ich hab keine ahnung.

    wenn du mir das obere in verbindung mit meinem code geben würdest würde ich sehr viel mehr verstehen.



  • Kann ich nicht das ganze TimeToStr Element "z.b. 01:30:30" in Sekunden zerlegen, dass dann "5430" herauskommt und ich mit dem dann im timer rechne "a=5430-1". Das dann wiederum umwandle und im "hh🇲🇲ss" format ausgebe?



  • z.B. könnte man Jansens Funktion hiermit vervollständigen:

    int iCountdown = Seconds;
    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);
    
    AnsiString OutString = AnsiString(Tage) + " ";
    if (Std < 10)
    	OutString += "0";
    OutString += AnsiString(Std) + ":";
    if (Min < 10)
    	OutString += "0";
    OutString += AnsiString(Min) + ":";
    if (Sek < 10)
    	OutString += "0";
    OutString += AnsiString(Sek);
    
    return OutString;
    


  • Gibt es keine andere/einfachere, kürzere lösung für mein problem?

    ..bin jedoch schon sehr dankbar dass ihr mir soweit geholfen habt 😃



  • Kannst ja auch TDateTime-Objekte und die Funktionen aus der DateUtils-Unit verwenden.
    Ansonsten ist eine Basisumrechnung nun mal Handarbeit. Natürlich ließe sich das ganze kompakter schreiben, aber einfacher oder übersichtlicher wird's dadurch nicht.


Anmelden zum Antworten