![]() |
Zwei TDateTimes vergleichen
Ich habe zwei TDateTimes und einen Timer, der jede 1/1000 Sekunde "ausschlägt".
Nun möchte ich beide vergleichen und überprüfen, ob eine Sekunde vergangen ist. (Ein TDateTime bleibt erhalten)
Delphi-Quellcode:
Was muss ich jetzt als Bedingung in die 2. If-Bedingung setzen?
procedure TFFreggels.VersinkTimerTimer(Sender: TObject);
var i : Byte; begin for i := 0 to High(Diamant) do begin if Diamant[i].sink then begin // nicht diese!! if Aktuelle Zeit - Andere Zeit = 1 {Sekunde} then //die Zeile! //mache das und das end; end; end; |
Re: Zwei TDateTimes vergleichen
|
Re: Zwei TDateTimes vergleichen
|
Re: Zwei TDateTimes vergleichen
Danke! Das Between funzt :D Man muss nur aufpassen, dass wenn die eine TDateTime := Time is, dass die andere nicht Now ist ;) ansonsten hatte ich das etwas so um die 3.000...
|
Re: Zwei TDateTimes vergleichen
Zitat:
unter Windows wirst Du es nicht schaffen einen "Delphi"-Timer beizubringen jeden ms "auszuschlagen". Dafür ist der Timer-Event viel zu langsam ;-) Ich meine wir hatten im Forum dazu schon einige Beitrage; Du must mal suchen. Wenn ich mich dunkel erinnere ist die kleinste Zeit für einen Timer um die 15 ms. Aber auch das ist sehr ungenau weil der Timer-Event keine hohe Priorität im System hat. |
Re: Zwei TDateTimes vergleichen
Hmmm....
Das ist dann aber äußerst dumm ;) So... Und nun mein 2. Problem: Ich habe einen Timer (Interval = 20 ms) und überprüfe immer dann (OnTimer) ob eine Sekunde vergangen ist! Nun kann es natürlich sein, dass er als Intervall 1001 hat! Gibt es dann eine Funktion, die einen Bestimmten bereich abdeckt? Also z.B. von 988 bis 1012 ? Oder muss ich
Delphi-Quellcode:
nehmen?
if (Differenz > 988) and (Differenz < 1012) then...
Edit: Achso... Ich habe jetzt statt SecBetween MillisekBetween ;) Aber es geht trotzdem noch nicht :?
Delphi-Quellcode:
procedure TFFreggels.VersinkTimerTimer(Sender: TObject);
var Status, i, Diff : Integer; begin for i := 0 to High(Diamant) do begin [...] case Diamant[i].status of 0: Status := 1000; 1: Status := 1750; 2: Status := 2400; 3: Status := 2900; end; Diff := MillisecondsBetween(Diamant[i].startTime, Time); if (Diff > Status - 12) and (Diff < Status + 12) then begin [...] // das hier wird NICHT ausgeführt end; end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 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