Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Zeitdifferenz als Prozent darstellen (https://www.delphipraxis.net/122472-zeitdifferenz-als-prozent-darstellen.html)

Chris P 16. Okt 2008 20:22


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.

Klaus01 16. Okt 2008 20:30

Re: Zeitdifferenz als Prozent darstellen
 
Guten Abend,

TDateTime ist ein FloatTyp, Du kannst also ohne Probleme mit ihm rechnen.

Grüße
Klaus

Hawkeye219 16. Okt 2008 20:33

Re: Zeitdifferenz als Prozent darstellen
 
Hallo Chris,

Zitat:

Zitat von Chris P
Ist der '/'-Operator auf TDateTime definiert?

Eigentlich stellt sich die Frage gar nicht, da du ja keine Zeitpunkte, sondern Zeitdifferenzen (zB. Millisekunden) dividieren musst. Die Unit DateUtils enthält Routinen, mit denen du recht komfortabel diese Differenzen ermitteln kannst.

Gruß Hawkeye

Chris P 16. Okt 2008 20:35

Re: Zeitdifferenz als Prozent darstellen
 
Erstmal besten Dank für deine schnelle Antwort.

Ich mache folgendes:

Delphi-Quellcode:
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.
Irgendwie bekomme ich die Prozent nicht raus.

Wo liegt mein Fehler?

jfheins 16. Okt 2008 20:53

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 ;)

Chris P 16. Okt 2008 20:58

Re: Zeitdifferenz als Prozent darstellen
 
Ok, klingt logisch :-)
Aber welche Einheit hat länge?

jfheins 16. Okt 2008 21:05

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 ;)

Chris P 16. Okt 2008 21:18

Re: Zeitdifferenz als Prozent darstellen
 
Hab das jetzt so:

Delphi-Quellcode:
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;
Bleibt nur das Problem das von 100% runter gezählt wird statt hoch.

Dann muss ich schreiben:
Delphi-Quellcode:
Label4.Caption := FloatToStr(( 1- stop - now()) / len * 100);
Gibts einen anderen Weg?

nahpets 17. Okt 2008 08:28

Re: Zeitdifferenz als Prozent darstellen
 
Hallo,
Zitat:

Zitat von Chris P
Bleibt nur das Problem das von 100% runter gezählt wird statt hoch.

Dann muss ich schreiben:
Delphi-Quellcode:
Label4.Caption := FloatToStr(( 1- stop - now()) / len * 100);
Gibts einen anderen Weg?

ich rate mal, reicht nicht dann
Delphi-Quellcode:
Label4.Caption := FloatToStr(100 - ((1 - stop - now) / len * 100));

Blup 17. Okt 2008 08:34

Re: Zeitdifferenz als Prozent darstellen
 
simple Prozentrechnung: (vergangene Zeit / Gesamtzeit) * 100%

((Now() - start) / (stop - start)) * 100


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:25 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz