![]() |
Berechnung einer bestimmten Prüfdauer
Hallo
Ich hänge momentan an einem kleinen Problem mit der Berechnung einer Prüfdauer.
Delphi-Quellcode:
Das Problem dabei ist, sobald 23:59:59 überschritten wird zählt es von unten her zurück (logisch).
L_TestTime1_1.Caption := TimeToStr(Time() - StrToTime(Beginn_T_T1));
Gibt es ne einfach Möglichkeit, dass dies über das 24h System hinaus geht? Hab momentan Mühe dies zu lösen. Vielen Dank |
Re: Berechnung einer bestimmten Prüfdauer
Versuch mal die SecondsBetween Funtion
|
Re: Berechnung einer bestimmten Prüfdauer
Ist es möglich, dass es die Funktion in Delphi 4 nicht gibt?
Finde dazu nichts in der Hilfe... |
Re: Berechnung einer bestimmten Prüfdauer
Mist, hast Recht! Tschuldige, die gibts erst ab Delphi 6.
Versuch das mal:
Delphi-Quellcode:
function SecondsBetween(const ANow, AThen: TDateTime): Int64;
begin Result := Trunc(SecondSpan(ANow, AThen)); end; |
Re: Berechnung einer bestimmten Prüfdauer
hmm schade... SecondSpan kennt es auch nicht
|
Re: Berechnung einer bestimmten Prüfdauer
Diese Funktionen helfen eh nicht, selbst wenn es diese bei dir gäbe.
Du mußt erst vo dem Verglich die 2. Zeit anpassen, da sonst (slebst mit den oben genannten Funktionen) ein falsches Ergebnis rauskommt. Denn du rechnest ja nur mit den Zeitanteilen, da aber die Zeit nach 23°° am nächsten Tag ist und Time() / StrToTime(...) nur mit dem Tag 0 rechnen, kann daraus nichts werden. du mußt also, sobald die Endzeit kleiner als die Startzeit ist einen Tag dazurechnen, damit es stimmt.
Code:
PS: aber nicht vergessen, diese Art der Zeitberechnung geht nur, wenn die Dauer unter 24 Sunden liegt.
Var Ts, Te: TDateTime;
Begin Ts := Time(); Te := StrToTime(Beginn_T_T1); [color=#ff0000]If Te < Ts Then Te := Te + 1;[/color] L_TestTime1_1.Caption := TimeToStr(Ts - Te); End; |
Re: Berechnung einer bestimmten Prüfdauer
Zitat:
|
Re: Berechnung einer bestimmten Prüfdauer
Danke Himitsu...
Das ist eigentlich schon die Lösung des Problems... Sobald Te = Ts ist zähle ich noch eine Tag Counter hoch und addier zum angezeigten String einfach 24 h dazu... |
Re: Berechnung einer bestimmten Prüfdauer
Falls es jemanden interessiert...
... sicher nicht die beste Möglichkeit aber soweit läufts! Das ganze nun gelöst:
Delphi-Quellcode:
var
Te,Ts :TDateTime; Present :TDateTime; Hour, Min, Sec, MSec: Word; Beginn_T_T1 :String; begin Ts := StrToTime(Beginn_T_T1); Te := Time(); if Te < Ts then Te := Te + 1; Present := (Ts - Te); if TimeToStr(Ts - Te) = '00:00:00' then inc(Day1); Case Day1 of 0: L_TestTime1_1.Caption := TimeToStr(Present); 1: begin DecodeTime(Present, Hour, Min, Sec, MSec); Hour := Hour + 24; if Sec < 10 then L_TestTime1_1.Caption := IntToStr(Hour)+':'+IntToStr(Min)+':0'+IntToStr(Sec); if Min < 10 then L_TestTime1_1.Caption := IntToStr(Hour)+':0'+IntToStr(Min)+':'+IntToStr(Sec); if (Min < 10) AND (Sec < 10) then L_TestTime1_1.Caption := IntToStr(Hour)+':0'+IntToStr(Min)+':0'+IntToStr(Sec); end; 2: begin DecodeTime(Present, Hour, Min, Sec, MSec); Hour := Hour + 48; if Sec < 10 then L_TestTime1_1.Caption := IntToStr(Hour)+':'+IntToStr(Min)+':0'+IntToStr(Sec); if Min < 10 then L_TestTime1_1.Caption := IntToStr(Hour)+':0'+IntToStr(Min)+':'+IntToStr(Sec); if (Min < 10) AND (Sec < 10) then L_TestTime1_1.Caption := IntToStr(Hour)+':0'+IntToStr(Min)+':0'+IntToStr(Sec); end; 3: begin DecodeTime(Present, Hour, Min, Sec, MSec); Hour := Hour + 72; if Sec < 10 then L_TestTime1_1.Caption := IntToStr(Hour)+':'+IntToStr(Min)+':0'+IntToStr(Sec); if Min < 10 then L_TestTime1_1.Caption := IntToStr(Hour)+':0'+IntToStr(Min)+':'+IntToStr(Sec); if (Min < 10) AND (Sec < 10) then L_TestTime1_1.Caption := IntToStr(Hour)+':0'+IntToStr(Min)+':0'+IntToStr(Sec); end; 4: begin DecodeTime(Present, Hour, Min, Sec, MSec); Hour := Hour + 96; if Sec < 10 then L_TestTime1_1.Caption := IntToStr(Hour)+':'+IntToStr(Min)+':0'+IntToStr(Sec); if Min < 10 then L_TestTime1_1.Caption := IntToStr(Hour)+':0'+IntToStr(Min)+':'+IntToStr(Sec); if (Min < 10) AND (Sec < 10) then L_TestTime1_1.Caption := IntToStr(Hour)+':0'+IntToStr(Min)+':0'+IntToStr(Sec); end; end; |
Re: Berechnung einer bestimmten Prüfdauer
Falls es dir hilft: ich hätte da eine Idee, wie man eine ähnliche Funktion wie SecondsBetween realisieren könnte:
Delphi-Quellcode:
Also die Funktion liefert die Sekunden zurück, die von t1 bis t2 vergangen sind.
function Sekunden(t1, t2: TDateTime): LongInt;
begin Result:= Round((t2-t1)*86400); end; Als Ergebnistyp könnte man auch Int64 verwenden, falls es den in deiner Delphi-Version gibt. LongInt reicht aber auch, falls die beiden Zeiten nicht mehr als ca. 60 Jahre auseinanderliegen. MfG Binärbaum |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 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