![]() |
Re: Komme nicht weiter mit Zeitvergleichen?
Zitat:
Um auf das kleine Beispiel mit dem Wecker zu kommen, das geht so:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender:TObject);
begin if Frac( Now ) >= StrToTime( '15:00' ) then begin Timer1.Enabled := False; ShowMessage( 'Jetzt sollte ich Dich wecken!' ); end; end; |
Re: Komme nicht weiter mit Zeitvergleichen?
Ich habs grad getestet, mein Code funktioniert.
WICHTIG! Beim TDateTimePicker die Eiegnschaft Date im ObjektInspektor löschen. Dann wird dort 30.12.1899 automatisch eingetragen und dann passt es. Edit: Zum setzen der Zeit für den DateTimePicker beim FormShow ist suboptimal. FormShow wird bei jedem anzeigen aufgerufen. D.h. du minimierst das Fenster und holst es wieder -> FormShow |
Re: Komme nicht weiter mit Zeitvergleichen?
Zitat:
@AlexII: Eigentlich ist das gar nicht schwer, man muss nur einmal das Problem erkennen. Du vergleichst 2 Werte mit unterschiedlicher Genauigkeit. Um diese trotzdem auf "Gleichheit" prüfen zu können, musst du ein bisschen ungenauer werden. In deinem Fall musst du dazu eine zeitrange einbauen. Also einen bestimmten Zeitintervall, indem gesagt wird, die Zeit stimmt mit der anderen überein. Als Beispiel mal Floatwerte:
Delphi-Quellcode:
procedure TBluppForm.button1Click(Sender: TObject);
function SingleEquals(const AVal1, AVal2: Single; const Precision: Single = 1.0): Boolean; begin Result := (AVal2 > AVal1 - Precision) and (AVal2 < AVal1 + Precision) end; begin if SingleEquals(2.0, 3.2) then MessageDlg('1. Equals', mtInformation, [mbOK], 0); if SingleEquals(2.0, 3.2, 1.5) then MessageDlg('2. Equals', mtInformation, [mbOK], 0); end; Ich hoffe das Problem ist jetzt verständlicher geworden :) |
Re: Komme nicht weiter mit Zeitvergleichen?
Zitat:
Und wieso vergleichst du mit >= und nicht einfach = ? :gruebel: |
Re: Komme nicht weiter mit Zeitvergleichen?
Zitat:
Es gibt mehrere Antworten, die sich genau darauf beziehen. |
Re: Komme nicht weiter mit Zeitvergleichen?
Nochmal: man vergleicht keine 2 Double-Werte mit =, da die Wahrscheinlichkeit gering ist, dass sie wirklich exakt übereinstimmen.
|
Re: Komme nicht weiter mit Zeitvergleichen?
Zitat:
|
Re: Komme nicht weiter mit Zeitvergleichen?
Wirf doch einfach mal einen Blick in die Unit DateUtils, da steht viel Nützliches für Deine Zwecke drin.
|
Re: Komme nicht weiter mit Zeitvergleichen?
Zitat:
|
Re: Komme nicht weiter mit Zeitvergleichen?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:24 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