AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Komme nicht weiter mit Zeitvergleichen?

Ein Thema von AlexII · begonnen am 19. Okt 2009 · letzter Beitrag vom 19. Okt 2009
Antwort Antwort
Seite 2 von 4     12 34   
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#11

Re: Komme nicht weiter mit Zeitvergleichen?

  Alt 19. Okt 2009, 13:52
Ich verstehe jetzt die Logik nicht wie Delphi mit der Zeit umgeht.

Das hier funkt nicht:
Delphi-Quellcode:
Label2.Caption:=TimeToStr(Now);
Label3.Caption:=TimeToStr(DateTimePicker2.Time);
if Now=DateTimePicker2.Time then showmessage('ja');
aber das:
Delphi-Quellcode:
Label2.Caption:=TimeToStr(Now);
Label3.Caption:=TimeToStr(DateTimePicker2.Time);
if Label2.Caption=Label3.Caption then showmessage('ja');
obwohl das ja gleich ist.
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#12

Re: Komme nicht weiter mit Zeitvergleichen?

  Alt 19. Okt 2009, 13:55
Zitat von Sherlock:
OK, weils keiner wirklich erklärt hat, versuch ich mich mal daran:

Wissenswerte Voraussetzungen:
  • Ein DateTime erfasst auch Millisekunden.
  • Now ist natürlich auch auf die Millisekunde genau.
  • Der Timer ist nicht Millisekunden genau, da windows keine Echtzeitsystem ist.

Wenn Du also (millisekunden-)genaue Gleichheit prüfen möchtest ist es extrem wahrscheinlich, daß Du nicht die korrekte Millisekunde erwischst. Deshalb soltlest Du vielleicht nur Sekunden- oder Minutengenau prüfen. Wie Du das anstellst überlass ich mal Deiner Phantasie.

Sherlock
Wow das nenne ich fachmännisch.
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#13

Re: Komme nicht weiter mit Zeitvergleichen?

  Alt 19. Okt 2009, 13:55
Zitat von Luckie:
Plus einem Deltawert, sonst stimmt der Vergleich 23 Stunden und 59 Minuten.
Wozu das?

Wenn man zwei TDateTime hat und mit größer gleich abfragt stimmt, die Abfrage in jedem Fall.
Das wichtige ist bei reiner Uhrzeitabfrage, daß man auch NUR die Uhrzeit vergleicht.

Delphi-Quellcode:
procedure TForm4.FormShow(Sender: TObject);
begin
  DateTimePicker2.Time := TimeOf(Now())
end;

procedure TForm4.Timer1Timer(Sender: TObject);
begin
   if TimeOf(Now()) >= DateTimePicker2.Time then
     ShowMessage('Ok');
end;
Habs nicht getestet, aber sollte so richtig sein.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

Re: Komme nicht weiter mit Zeitvergleichen?

  Alt 19. Okt 2009, 13:56
Zitat von AlexII:
Ich verstehe jetzt die Logik nicht wie Delphi mit der Zeit umgeht.

Das hier funkt nicht:
Delphi-Quellcode:
Label2.Caption:=TimeToStr(Now);
Label3.Caption:=TimeToStr(DateTimePicker2.Time);
if Now=DateTimePicker2.Time then showmessage('ja');
aber das:
Delphi-Quellcode:
Label2.Caption:=TimeToStr(Now);
Label3.Caption:=TimeToStr(DateTimePicker2.Time);
if Label2.Caption=Label3.Caption then showmessage('ja');
obwohl das ja gleich ist.
Nein, ist es nicht!

In Now steht z.B. 2009-10-19 13:56:25.123 => TimeToStr(Now) => 13:56:25 !!!!!!

Wenn Du diesen Code (auf einen Button legen) ausführst ( auf der Form musst du natürlich ein MemoFeld mit Namen Memo1 haben! )
Delphi-Quellcode:
begin
  Memo1.Lines.Add( FloatToStr( Now ) );
  Label1.Caption := TimeToStr( Now );
  Memo1.Lines.Add( FloatToStr( Now ) );
  Label2.Caption := TimeToStr( now );
  Memo1.Lines.Add( FloatToStr( Now ) );
end;
Dann erscheint im Memo1 folgende Ausgabe:
Code:
40105,5863273264
40105,5863273611
40105,5863273727
Die Interpretation überlasse ich Dir!
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#15

Re: Komme nicht weiter mit Zeitvergleichen?

  Alt 19. Okt 2009, 14:04
Zitat:
Undefinierter Bezeichner: TimeOf
Was soll den in die Uses rein?
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#16

Re: Komme nicht weiter mit Zeitvergleichen?

  Alt 19. Okt 2009, 14:05
uses DateUtils;
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#17

Re: Komme nicht weiter mit Zeitvergleichen?

  Alt 19. Okt 2009, 14:09
Hallo,

noch mal zu deinem Code.

Delphi-Quellcode:
Label2.Caption:=TimeToStr(Now);
Label3.Caption:=TimeToStr(DateTimePicker2.Time);
if Now=DateTimePicker2.Time then showmessage('ja');
In Zeile 3 ist Now schon wieder etwas weiter
als in Zeile 1.

Wenn es wirklich nur ein Wecker sein soll,
der genau einmal weckt, vergleiche mit >=

Delphi-Quellcode:
Label1.Caption:= TimeToStr('15:00'); // wir wollen 15:00 wecken

procedure Timer1OnTimer
begin
  if Now>=StrToTime(Label1.Caption) then
  begin
    ShowMessage('klingellllll');
    Timer1.Enabled:= False;
  end;
end;

Heiko
Heiko
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#18

Re: Komme nicht weiter mit Zeitvergleichen?

  Alt 19. Okt 2009, 14:09
Zitat von Tyrael Y.:

Delphi-Quellcode:
procedure TForm4.FormShow(Sender: TObject);
begin
  DateTimePicker2.Time := TimeOf(Now())
end;

procedure TForm4.Timer1Timer(Sender: TObject);
begin
   if TimeOf(Now()) >= DateTimePicker2.Time then
     ShowMessage('Ok');
end;
Funkt auch nicht
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#19

Re: Komme nicht weiter mit Zeitvergleichen?

  Alt 19. Okt 2009, 14:11
Zitat von hoika:
if Now>=StrToTime(Label1.Caption) then
Öh, der Vergleich ist aber immer True!
StrToTime( '15:00' ) => 0.625
Now ist aber irgendwie immer > 1.0 (aktuell > 40105.0)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#20

Re: Komme nicht weiter mit Zeitvergleichen?

  Alt 19. Okt 2009, 14:16
Wusste gar nicht, dass einfach zwei Zeiten zu vergleichen so kompliziert ist.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 22:48 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