AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Komme nicht weiter mit Zeitvergleichen?

Ein Thema von AlexII · begonnen am 19. Okt 2009 · letzter Beitrag vom 19. Okt 2009
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von Sir Rufo
Sir Rufo

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

Re: Komme nicht weiter mit Zeitvergleichen?

  Alt 19. Okt 2009, 14:18
Zitat von AlexII:
Wusste gar nicht, dass einfach zwei Zeiten zu vergleichen so kompliziert ist.
Ist es ja auch nicht ... aber es gibt halt Milliarden falsche Wege und nur wenig richtige Wege.

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;
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
Tyrael Y.

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

Re: Komme nicht weiter mit Zeitvergleichen?

  Alt 19. Okt 2009, 14:20
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
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#23

Re: Komme nicht weiter mit Zeitvergleichen?

  Alt 19. Okt 2009, 14:20
Zitat von Tyrael Y.:
Zitat von Luckie:
Plus einem Deltawert, sonst stimmt der Vergleich 23 Stunden und 59 Minuten.
Wozu das?
Weil der Wecker dann 24/7 klingelt.

@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
  Mit Zitat antworten Zitat
AlexII

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

Re: Komme nicht weiter mit Zeitvergleichen?

  Alt 19. Okt 2009, 14:30
Zitat von Tyrael Y.:
Zum setzen der Zeit für den DateTimePicker beim FormShow ist suboptimal.
Was heißt bei dir suboptimal?

Und wieso vergleichst du mit >= und nicht einfach = ?
  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
 
#25

Re: Komme nicht weiter mit Zeitvergleichen?

  Alt 19. Okt 2009, 14:34
Zitat von AlexII:
Und wieso vergleichst du mit >= und nicht einfach = ?
Liest du auch, was hier in dem Thread geschrieben steht?

Es gibt mehrere Antworten, die sich genau darauf beziehen.
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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#26

Re: Komme nicht weiter mit Zeitvergleichen?

  Alt 19. Okt 2009, 14:35
Nochmal: man vergleicht keine 2 Double-Werte mit =, da die Wahrscheinlichkeit gering ist, dass sie wirklich exakt übereinstimmen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
AlexII

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

Re: Komme nicht weiter mit Zeitvergleichen?

  Alt 19. Okt 2009, 14:36
Zitat von Sir Rufo:
Zitat von AlexII:
Und wieso vergleichst du mit >= und nicht einfach = ?
Liest du auch, was hier in dem Thread geschrieben steht?

Es gibt mehrere Antworten, die sich genau darauf beziehen.
Wenn man bei 25 Posts 30 verschiedene Meinungen hört kommt man durcheinander.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#28

Re: Komme nicht weiter mit Zeitvergleichen?

  Alt 19. Okt 2009, 14:39
Wirf doch einfach mal einen Blick in die Unit DateUtils, da steht viel Nützliches für Deine Zwecke drin.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
AlexII

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

Re: Komme nicht weiter mit Zeitvergleichen?

  Alt 19. Okt 2009, 14:40
Zitat von DeddyH:
Nochmal: man vergleicht keine 2 Double-Werte mit =, da die Wahrscheinlichkeit gering ist, dass sie wirklich exakt übereinstimmen.
Ich muss das leider genau haben, also = Dann muss ich wohl die Sekunden streichen.
  Mit Zitat antworten Zitat
AlexII

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

Re: Komme nicht weiter mit Zeitvergleichen?

  Alt 19. Okt 2009, 14:41
Zitat von DeddyH:
Wirf doch einfach mal einen Blick in die Unit DateUtils, da steht viel Nützliches für Deine Zwecke drin.
Wo kriegt man sie her?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 08:23 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