Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi DateTime - 10 Sekunden (https://www.delphipraxis.net/23149-datetime-10-sekunden.html)

se0man 29. Mai 2004 17:51


DateTime - 10 Sekunden
 
Hallo,
nachdem ich mich jetzt lange genug herumgeärgert habe,
stelle ich meine Frage nun doch als neuen Thread ein:

Und zwar möchte ich,
das wenn der User z.B. 29.05.2004 15:00:00 angibt,
das mein THEN-Ereignis des IF-Clause am
30.05.2004 um 14:59:50 ausgeführt wird.
Ich will also von meinem/r TDATETIME
10 Sekunden abziehen.

WIE?? :wall:

thx, se0man

alcaeus 29. Mai 2004 17:56

Re: DateTime - 10 Sekunden
 
Du zählst den entsprechenden Wert für eine Sekunde Mal 10 ab. Eine Sekunde ist einfach 1/86400. Begründung: Ein Tag entspricht 1 als DateTime. Eine Minute hat 60 Sekunden, eine Stunde 60 Minuten und Tag 24 Stunden. Das gibt 60*60*24, also 86400. Das sind die Sekunden in einem Tag, also dürfte der Rest wohl von alleine kommen...

Greetz
alcaeus

se0man 29. Mai 2004 18:06

Re: DateTime - 10 Sekunden
 
thxxx

Mein einziges Problem war nur,
dass ich 1.1574074074074074074074074074074e-5
statt 1/86400 benutzte.
Kam mir sehr komisch vor.
Habe mal wieder zu wenig gedacht. Sorry. :oops:

Naja, also der Code:

Code:
if (StrToDateTime(edtDate.Text+' '+edtTime.Text)+(1/86400) = Now)
 then begin
  { Ereignis }
 end;
Ciao,
-se0man

alcaeus 29. Mai 2004 18:11

Re: DateTime - 10 Sekunden
 
Also, verwende beim Vergleich mit Now nach Möglichkeit nicht =, da die Genauigkeit des DateTime-Wertes jene eines Timers überschreitet. Verwende stattdessen >=:
Delphi-Quellcode:
if (StrToDateTime(edtDate.Text+' '+edtTime.Text)-(1/8640) >= Now) then
begin
  //Dein Code
end;
Sobald der Zeitpunkt überschritten ist, wird der Code durchgeführt. Du hast außerdem den falschen Wert addiert, du willst ja die 10 Sekunden abzählen... :mrgreen:
Achja, ein kleiner Tipp: Sieh dir Mal DateTimePicker an (Paletter Win32).

Greetz
alcaeus

se0man 29. Mai 2004 18:23

Re: DateTime - 10 Sekunden
 
DateTimePicker verwende ich bereits. THX
Das war nämlich kein Copy&Paste Code,
was auch den 10 -> 1 sowie den = -> <=
Fehler erklärt. :mrgreen:

Ansonsten nochmal thxx
-se0man

The-X 30. Mai 2004 14:26

Re: DateTime - 10 Sekunden
 
Oder man verwendet die funktion IncSecond der Unit SysUtils :

Delphi-Quellcode:
if (IncSecond(StrToDateTime(edtDate.Text+' '+edtTime.Text),-10) >= Now) then
begin
  //Dein Code
end;
[edit: Text vergessen :roll:]


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:55 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 by Thomas Breitkreuz