AGB  ·  Datenschutz  ·  Impressum  







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

Zeitberechnung mit Tageswechsel

Ein Thema von NetSonic · begonnen am 15. Jan 2009 · letzter Beitrag vom 15. Jan 2009
Antwort Antwort
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Zeitberechnung mit Tageswechsel

  Alt 15. Jan 2009, 12:05
Hallo Delphi-Gemeinde...

ich bekomme bei folgenden Problem einfach nicht die richtige Idee:

Ich habe in einem Programm eine Zeitberechnung, die mir anzeigt, wie lange ggf. ein Vorgang noch läuft, der von mir gestartet wurde. Es ist also z.B. hinterlegt, wie lange es dauert, bis 50 Pakete von Lager A nach Lager B trasportiert sind. Dieser Vorgang heißt jetzt "Lager von A nach B - 50"... Das alles steht inkl. Zeitvorgabe (hier z.B. 00:03:00) in einer Datenbank.
Nun wähle ich in meinem Programm diesen Vorgang aus und starte folgenden Ablauf:

1. Das Programm errechnet ausgehend von der aktuellen Zeit das Ende des Vorgangs
Start: 12:00:00
Dauer: 00:03:00
Ende ist also 12:03:00
2. Ein Countdown zeigt mir die Restlaufzeit an und gibt mir eine Meldung, wenn die Zeit um ist.

Wenn jetzt aber die Startzeit z.B. um 23:59:30 ist und somit die Endzeit um 00:02:30 liegt, erfolgt keine Meldung, obwohl der Countdown erfolgt. Der Sourcecode schaut so aus... Die Zeitangaben sind alle vom Typ TDateTime. Die Variable "tEndzeit" ist Global.

Beim Start:
Delphi-Quellcode:
tEndzeit := Time + StrToTime('00:03:00');
Timer1.Enabled := True;
Im Timer (1000ms)
Delphi-Quellcode:
tCalcTime := tEndzeit - Time;
Label1.Caption := TimeToStr(tCalcTime);
if (tCalcTime <= StrToTime('00:00:00')) then
begin
Timer1.Enabled := False;
MessageDlg('Vorgang sollte abgeschlossen sein!', mtWarning, [mbOK], 0);
end;
Wo ist denn da mein Denkfehler???
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Zeitberechnung mit Tageswechsel

  Alt 15. Jan 2009, 12:26
Du musst das Datum in Start- und Endzeit mit einbeziehen.
Für Dein Beispiel:
Start = 15.01.2008 23:59:30
Ende = 16.01.2008 00:02:30

Damit kannst Du dann Abfragen, ob die Endzeit überschritten wurde.
Jens
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Zeitberechnung mit Tageswechsel

  Alt 15. Jan 2009, 12:35
Hallo,

nur so ein Gefühl:
Deine Berechnungen erzeugen im Datums-Teil von TDateTime ungewollte Veränderungen oder eben genau nicht

Ich würde das ganze eher so machen:

Delphi-Quellcode:
tEndzeit := now + StrToTime('00:03:00');
Timer1.Enabled := True;

//in OnTimer
tCalcTime := tEndzeit - now;
Label1.Caption := TimeToStr(tCalcTime);
if (tEndZeit <= now) then
begin
Timer1.Enabled := False;
MessageDlg('Vorgang sollte abgeschlossen sein!', mtWarning, [mbOK], 0);
end;
Unterschied ist anstatt Time besser now zu verwenden und zu prüfen ob die Endzeit in der Vergangenheit liegt.

Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#4

Re: Zeitberechnung mit Tageswechsel

  Alt 15. Jan 2009, 13:04
@ChrisE: Habs jetzt mit Now gelöst und das funktioniert auch! Danke. Manchmal kommt man einfach nicht drauf

@Nersgatt: Danke auch für Deinen Hinweis...

Problem gelöst!
  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 19:02 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