Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
17. Okt 2014
Kleiner-gleich 6 Uhr (vor 7 Uhr) UND größer/nach 14 Uhr
If (x <= 6) and (x > 14), bzw. umgestellt If (6 >= x) and (x > 14) (6 >= x > 14)
Lösung: Also entweder ODER oder du müsstest die Vergleichsoperatoren umdrehen.
PS: Schau auch mal in die neue DateUtils.
TimeOf ist bestimmt verständlicher als Frac und es gibt noch viele weitere praktische Funktionen dort, wie z.B. TimeInRange.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
22. Jan 2009
wenn es nicht ganz genau sein muß, dann geht auch sowas (falls ich mich nicht verrechnet hab)
// Timer1.Enabled per Default auf False
Procedure TForm1.Timer1Timer(Sender: TObject);
Begin
Timer.Enabled := False;
Showmessage(TimeToStr(Now));
Timer1.Intervall := 24*60*1000 - (Trunc(Now * 24*60*1000) - Trunc(Now * 24)*60*1000);
Timer1.Enabled := True;
End;
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
22. Jan 2009
dann wird (z.B. wenn das TimerIntervall auf 1000 steht die Nachricht bis zu 3600 Mal pro Stunde angezeigt?
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
22. Jan 2009
OK, dann laß mal die Sekunden weg, aber was glaubst du denn, was dann passiert?
ja richtig: die Nachricht wird mehrmals angezeigt
OK, der Timer auf 1 Minute , da kommt dann die Nachricht maximal einmal an, oder auch garnicht :stupid:
So oder so, das Intervall muß (bei deinem Code) kürzer sein, als seine Vergleichtdistanz und es immer muß das letze Ereignis gespeichert und beachtet werden.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
22. Jan 2009
warum das nicht geht?
laß mal dein Programm, bei DeddyH's Code für einen Sekündchen hängen ... schwußt, die x:00:00 würde übersprungen und es passiert nix
und bei Now = StrToTime('16:00:00') wird, wenn das nicht "fast" auf die Millisekunde genau um 16°° verglichen wird, auch nie was passieren.
bei "meinem" Code kannst du den Timer auch locker im Minuten-Interval laufen lassen,
aber...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
22. Jan 2009
Da du ja deinen Timer nicht im Millisekundenrythmus ausführen kannst, wirst du nicht geneu vergleichen lassen können.
nimm die nächste Zeit (nächste volle stunde) und prüf so
If Trunc(Now) >= strtotime('16:00:00') then
Ach ja, Now enthält auch noch die Tage(Monate,Jahre) ... die müßtest du erstmal rausrechnen.