Entwickler-Ecke

Sonstiges (Delphi) - Innerhalb einer Zeitspanne (10:00 - 23:59) Prozedur starten


tortom1000 - Mo 05.01.09 22:56
Titel: Innerhalb einer Zeitspanne (10:00 - 23:59) Prozedur starten
Hallo,
ich bräuchte mal eure Hilfe:

Ich möchte gerne, wenn die aktuelle Uhrzeit innerhalb bspw. 10:00 - 23:59 Uhr
liegt, eine Prozedur oder ein showmessage ausführen, jedoch habe ich keinen
Schimmer, wie ich das anstellen kann.

Ich habe auf der Form einen Timer gepackt, innerhalb des Timer frage ich dann die
akuelle Uhrzeit ab via "now". Wie kann ich jetzt jedoch feststellen, ob "now" innerhalb
10:00 und 23:59 Uhr liegt?

Für Hilfe stets dankbar.
Tortom


jaenicke - Mo 05.01.09 23:10

Die manuelle Methode (ungetestet):

Delphi-Quelltext
1:
if (now >= Trunc(now) + 10/24and (now < Trunc(now + 1)) then                    
Das basiert darauf, dass bei den Zeitwerten ein Tag 1 entspricht. 10 Uhr ist also die aktuelle Zeit ohne die Nachkommastellen (00:00 Uhr) plus 10/24, also 10 von 24 Stunden, des Tages dazu.


lincore - Di 06.01.09 00:03

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Die manuelle Methode (ungetestet):

Delphi-Quelltext
1:
if (now >= Trunc(now) + 10/24and (now < Trunc(now + 1)) then                    
Das basiert darauf, dass bei den Zeitwerten ein Tag 1 entspricht. 10 Uhr ist also die aktuelle Zeit ohne die Nachkommastellen (00:00 Uhr) plus 10/24, also 10 von 24 Stunden, des Tages dazu.


Bitte korrigiere mich wenn ich falsch liege, aber ich glaube Du hast Dich bei einer Klammer vertan:

Delphi-Quelltext
1:
if (now >= Trunc(now + 10/24)) and (now < Trunc(now + 1)) then                    


jaenicke - Di 06.01.09 00:06

Nein, das war schon richtig, denn so wie du es hast, würden 10 Stunden zur aktuellen Zeit addiert, und dann davon auf 00:00 Uhr zurückgerechnet praktisch. Also z.B. 23 Uhr heute + 10 Stunden = 9 Uhr morgen. Vergangene Teile des Tages abschneiden ergibt 00:00 Uhr morgen früh, also in einer Stunde, statt heute früh, also vor 23 Stunden. ;-)


lincore - Di 06.01.09 00:19

<ot>Irre!</ot>

Das sollte ich mir mal durch den Kopf gehen lassen.


BenBE - Di 06.01.09 13:40

Einfacher geht's mit Frac(Now):


Delphi-Quelltext
1:
If (Frac(Now) > 10/24and (Frac(Now) < 1Then                    


jakobwenzel - Di 06.01.09 13:59

Frac wird aber niemals 1, weshalb das reichen sollte:

Delphi-Quelltext
1:
If Frac(Now) > 10/24 Then                    


tortom1000 - Mi 07.01.09 09:15

Hallo,
vielen Dank für eure Hilfe. Ich werde heute
die vorgeschlagenen Lösungen austesten.
Nochmals Danke
Tortom


matze - Mi 07.01.09 10:15

Nur so ein kleiner Tipp am Rande:
Da es für mich so aussieht, als wärst du noch nicht so erfahren in Delphi, kannst du auch folgenden Aufruf machen:

Delphi-Quelltext
1:
if HourOf(now) > 10 then                    

Damit das funktioniert musst du allerdings DateUtils bei uses mit in die Liste schreiben.
Das ist vielleicht einfacher zu lesen und nachzuvollziehen. Funktioniert aber genau so wie die anderen Codes.


tortom1000 - Do 15.01.09 09:55

Hallo,
wollte mich noch mal kurz bei euch bedanken. Konnte dank eurer Tipps
mein "Problem" gut lösen.
Nochmals vielen Dank
Tortom