AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Berechnung einer bestimmten Prüfdauer

Ein Thema von LaNtHaN · begonnen am 4. Apr 2005 · letzter Beitrag vom 4. Apr 2005
Antwort Antwort
LaNtHaN

Registriert seit: 29. Sep 2004
Ort: Wettingen
50 Beiträge
 
Delphi 2006 Professional
 
#1

Berechnung einer bestimmten Prüfdauer

  Alt 4. Apr 2005, 09:42
Hallo

Ich hänge momentan an einem kleinen Problem mit der Berechnung einer Prüfdauer.

L_TestTime1_1.Caption := TimeToStr(Time() - StrToTime(Beginn_T_T1)); Das Problem dabei ist, sobald 23:59:59 überschritten wird zählt es von unten her zurück (logisch).
Gibt es ne einfach Möglichkeit, dass dies über das 24h System hinaus geht?
Hab momentan Mühe dies zu lösen.

Vielen Dank
  Mit Zitat antworten Zitat
Michael_Bayer

Registriert seit: 20. Mär 2005
137 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Berechnung einer bestimmten Prüfdauer

  Alt 4. Apr 2005, 09:44
Versuch mal die SecondsBetween Funtion
  Mit Zitat antworten Zitat
LaNtHaN

Registriert seit: 29. Sep 2004
Ort: Wettingen
50 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Berechnung einer bestimmten Prüfdauer

  Alt 4. Apr 2005, 09:53
Ist es möglich, dass es die Funktion in Delphi 4 nicht gibt?
Finde dazu nichts in der Hilfe...
  Mit Zitat antworten Zitat
Michael_Bayer

Registriert seit: 20. Mär 2005
137 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Berechnung einer bestimmten Prüfdauer

  Alt 4. Apr 2005, 09:57
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;
  Mit Zitat antworten Zitat
LaNtHaN

Registriert seit: 29. Sep 2004
Ort: Wettingen
50 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Berechnung einer bestimmten Prüfdauer

  Alt 4. Apr 2005, 10:03
hmm schade... SecondSpan kennt es auch nicht
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.155 Beiträge
 
Delphi 12 Athens
 
#6

Re: Berechnung einer bestimmten Prüfdauer

  Alt 4. Apr 2005, 10:11
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:
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;
PS: aber nicht vergessen, diese Art der Zeitberechnung geht nur, wenn die Dauer unter 24 Sunden liegt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Michael_Bayer

Registriert seit: 20. Mär 2005
137 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Berechnung einer bestimmten Prüfdauer

  Alt 4. Apr 2005, 10:13
Zitat von himitsu:
Diese Funktionen helfen eh nicht, selbst wenn es diese bei dir gäbe.
Nuja - n TDateTime in die Funktionen gepackt und dann geht das schon...
  Mit Zitat antworten Zitat
LaNtHaN

Registriert seit: 29. Sep 2004
Ort: Wettingen
50 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Berechnung einer bestimmten Prüfdauer

  Alt 4. Apr 2005, 10:26
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...
  Mit Zitat antworten Zitat
LaNtHaN

Registriert seit: 29. Sep 2004
Ort: Wettingen
50 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Berechnung einer bestimmten Prüfdauer

  Alt 4. Apr 2005, 12:27
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:00then 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;
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Berechnung einer bestimmten Prüfdauer

  Alt 4. Apr 2005, 14:54
Falls es dir hilft: ich hätte da eine Idee, wie man eine ähnliche Funktion wie SecondsBetween realisieren könnte:
Delphi-Quellcode:
function Sekunden(t1, t2: TDateTime): LongInt;
begin
  Result:= Round((t2-t1)*86400);
end;
Also die Funktion liefert die Sekunden zurück, die von t1 bis t2 vergangen sind.
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
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 Uhr.
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