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???