![]() |
Zeitenvergleich schlägt fehl
Hi,
in einem Timer.OnTimer-Event folgenden Source:
Delphi-Quellcode:
Allerdings klappt das nie...
if {Get}Time >= DateTimePicker1.Time then
ShowMessage('Its Time'); Habt ihr da eine Idee?? Chris PS: Ach ja: Der Kind vom DateTimePicker steht auf dkTime. |
Re: Zeitenvergleich schlägt fehl
Nimm anstatt Time now, dann sollte es gehen!
Gruß |
Re: Zeitenvergleich schlägt fehl
@Chakotay1308
Funktioniert es bei Dir? Ich wollte gern Datum und Zeit abfangen. Und zwar so:
Delphi-Quellcode:
Selbst wenn ich jetzt aus ">=" lediglich ein "=" mache oder statt "Time" "Now" verwende, geht es bei mir trotzdem nicht! :wall:
If (Date>=On_Date.Date) And (Time>=On_Time.Time) Then
Application.MessageBox('Ich gehe jetzt online','Online',MB_OK); |
Re: Zeitenvergleich schlägt fehl
@schwedenbitter: deinen namen habe ich mal abgefüllt, bei uns im labor :-)
synonym |
Re: Zeitenvergleich schlägt fehl
Time liefert nur die Uhrzeit-Wert zurück (z.B. 0.75 für 18:00) und DateTimePicker.Time liefert immer den kompletten Zeitstempel zurück (38077.xy für heute). D.h du mußt den DateTimePicker.Time um die ganzzahl "befreien".
z.B.
Code:
if Time >= DateTimePicker.Time - Trunc(DateTimePicker.Time) then
ShowMessage('Its Time'); |
Re: Zeitenvergleich schlägt fehl
So weit so gut!
Allerdings wollte ich auch noch das Datum abfragen. Außerdem verstehe ich nicht so recht, warum die Variable TTime mal so und mal so bewertet wird. Schließlich funktioniert Dein Vorgehen zwar, hat aber einen Haken: Man bekommt die Message nicht mehr weg, weil ab einem bestimmten Punkt die aktuelle Zeit immer größer ist als die eingegebene. Ich möchte gern ein Programm schreiben, welches neben der Uhr läuft und zu bestimmten Zeiten an bestimmten Daten vordefinierte Aktionen macht (und das nur einmal). Trotzdem erst mal Danke. |
Re: Zeitenvergleich schlägt fehl
geht das nicht mit nem boolean?
|
Re: Zeitenvergleich schlägt fehl
Zitat:
TDatetime (und AFAIK TTime) ist 'ne Fließkommazahl, dessen ganze Zahl die Tage seit 31.12.1899 angiebt und der Nachkommateil den "Prozentsatz" des Tages: 0,25 = 06:00; 0,5 = 12:00; 0,75 = 18:00. Zitat:
|
Re: Zeitenvergleich schlägt fehl
und dafür machst du das:
Delphi-Quellcode:
var schongemacht:boolean; begin schongemacht:=false; if (Time >= DateTimePicker.Time - Trunc(DateTimePicker.Time)) and (schongemacht=false) then begin ShowMessage('Its Time'); schongemacht:=true; end; end; |
Re: Zeitenvergleich schlägt fehl
Ich habe jetzt eine für mich ausreichende Lösung gefunden :-D!
Ich wandle "einfach" das von mir gewünschte Datum nebst Zeit in einen mir bekannten String um. Anschließend tue ich dasselbe in meiner Timer-Procedure auf exakt dieselbe(!) Art und Weise und vergleiche einfach die Strings miteinander. Wenn man den Timer auf 1.000 einstellt, bekommt man das Ereignis auch nur noch einmal und kann sich die Booleans sparen. Das ist auch besser so, weil man sonst bei meiner Anzahl von Aktionen schnell den Überblick verliert oder ggf. auf Array ausweichen muß, was das ganze nicht einfacher macht. Die aktuelle Zeit könnte so aussehen,
Delphi-Quellcode:
das merken der Zeit z.B. so und
Zeit:=Concat(DateToStr(Date),TimeToStr(Time));
Delphi-Quellcode:
die Abfrage dementsprechend so:
{ Zeitwerte merken }
Onn:=Concat(DateToStr(On_Date.Date), TimeToStr(On_Time.Time)); Off:=Concat(DateToStr(Of_Date.Date), TimeToStr(Of_Time.Time)); Run:=Concat(DateToStr(Run_Date.Date), TimeToStr(Run_Time.Time));
Delphi-Quellcode:
Wer noch eine bessere Idee hat, bitte trotzdem melden. Ich bin immer bereit, neues zu lernen!
{ online gehen? }
If Zeit=Onn Then Begin Application.MessageBox('Ich gehe jetzt online','Online',MB_OK); End; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 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