![]() |
Zeitdifferenz als Prozent darstellen
Hallo zusammen,
ich schreibe ein Programm welches mir einen Countdown runterzählt. Gibt es ja schon zu genüge und ist auch soweit kein Problem. Aber ich möchte den Fortschritt der Zeit zwischen Start- und Endpunkt prozentual darstellen. Ist der '/'-Operator auf TDateTime definiert? Habt ihr einen guten Vorschlag? Danke im Vorraus. |
Re: Zeitdifferenz als Prozent darstellen
Guten Abend,
TDateTime ist ein FloatTyp, Du kannst also ohne Probleme mit ihm rechnen. Grüße Klaus |
Re: Zeitdifferenz als Prozent darstellen
Hallo Chris,
Zitat:
Gruß Hawkeye |
Re: Zeitdifferenz als Prozent darstellen
Erstmal besten Dank für deine schnelle Antwort.
Ich mache folgendes:
Delphi-Quellcode:
Irgendwie bekomme ich die Prozent nicht raus.
function getTimeRemaining(hour, min, sec: Word): TDateTime;
begin Result := Now() + EncodeTime(hour, min, sec, 0); end; procedure TForm1.FormCreate(Sender: TObject); begin stop := getTimeRemaining(0, 0, 15); end; procedure TForm1.Timer1Timer(Sender: TObject); begin Label4.Caption := FloatToStr(( stop - now()) / stop * 100); // <---- hier ist was an der Berechnung nicht ok? end; end. Wo liegt mein Fehler? |
Re: Zeitdifferenz als Prozent darstellen
Du musst zusätzlich die Länge des Zeitraumes speichern, um dann die vergangene Zeit zu dieser Länge in Relation setzten zu können.
Also (stop - now()) / länge * 100 ;) |
Re: Zeitdifferenz als Prozent darstellen
Ok, klingt logisch :-)
Aber welche Einheit hat länge? |
Re: Zeitdifferenz als Prozent darstellen
Am besten die gleiche we TDateTime ... ist n Single wenn ich mich nicht irre. Kannst aber auch TTime schreiben, ist eh alles das gleiche ;)
|
Re: Zeitdifferenz als Prozent darstellen
Hab das jetzt so:
Delphi-Quellcode:
Bleibt nur das Problem das von 100% runter gezählt wird statt hoch.
procedure TForm1.FormCreate(Sender: TObject);
begin start := Now(); stop := getTimeRemaining(0, 0, 15); len := stop - start; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Label4.Caption := FloatToStr(( stop - now()) / len * 100); end; Dann muss ich schreiben:
Delphi-Quellcode:
Gibts einen anderen Weg?
Label4.Caption := FloatToStr(( 1- stop - now()) / len * 100);
|
Re: Zeitdifferenz als Prozent darstellen
Hallo,
Zitat:
Delphi-Quellcode:
Label4.Caption := FloatToStr(100 - ((1 - stop - now) / len * 100));
|
Re: Zeitdifferenz als Prozent darstellen
simple Prozentrechnung: (vergangene Zeit / Gesamtzeit) * 100%
((Now() - start) / (stop - start)) * 100 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz