AGB  ·  Datenschutz  ·  Impressum  







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

Wecker klingelt nicht

Ein Thema von CalganX · begonnen am 23. Feb 2003 · letzter Beitrag vom 24. Feb 2003
Antwort Antwort
Seite 1 von 2  1 2      
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Wecker klingelt nicht

  Alt 23. Feb 2003, 18:08
Hi,
ich habe nun mal wieder ein etwas größeres Problem: ich bin derzeit dabei eine Art Wecker zu schreiben. Leider funktioniert das ganze nicht so, wie ich will.
Der Timer(tmTimer) steht auf 1000. Im Ontimer-Ereignis:
Delphi-Quellcode:
procedure TMainFrm.tmTimerTimer(Sender: TObject);
begin
  if Now = FDateTime then begin
    CoolTrayIcon1.ShowBalloonHint('CSD » Alarm', 'Sie wollten um diese Uhrzeit informiert werden!'+#13#10+'Es ist nun '+TimeToStr(FTime)+' Uhr!', bitInfo, 60);
(* CoolTrayIcon1 ist eine Komponente für ein TrayIcon in der TNA *)
    tmTimer.Enabled := false;
    btnStart.Enabled := true;
  end;
end;
Im OnClick des Start-Buttons (btnStart):
Delphi-Quellcode:
procedure TMainFrm.btnStartClick(Sender: TObject);
begin
  FDate := dtpDate.Date;
  FTime := dtpTime.Time;
  FDateTime := StrToDateTime(DateToStr(FDate) + ' ' + TimeToStr(FTime));
  Caption := DateTimeToStr(FDateTime); // zu Testzwecken
  tmTimer.Enabled := true;

  btnStart.Enabled := false;
end;
Nun ist das Problem, dass zwar die Caption richtig gesetzt wird, allerdings zur ausgewählten Uhrzeit nichts passiert. Der Button bleibt einfach disabled.
Hat dazu jemand eine Idee, warum?
Wenn Bedarf besteht hänge ich gerne auchmal der kompletten Source dran...

Chris
  Mit Zitat antworten Zitat
Frodo

Registriert seit: 30. Dez 2002
4 Beiträge
 
Delphi 6 Personal
 
#2
  Alt 23. Feb 2003, 18:16
hi,
villeicht musst du prüfen ob die weckzeit bereits erreicht bzw. überschritten ist.
if now >= Weckzeit
du prüfst ob die weckzeit identisch ist mit der aktuellenzeit.
gruß,..
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#3
  Alt 23. Feb 2003, 18:19
Hi,
eigentlich wollte ich diese Möglichkeit unterbinden, aber da es wohl doch die einzige Möglichkeit ist... Na gut. Aber es würde mich interressieren, warum das so ist...

Chris
  Mit Zitat antworten Zitat
Frodo

Registriert seit: 30. Dez 2002
4 Beiträge
 
Delphi 6 Personal
 
#4
  Alt 23. Feb 2003, 18:24
hi nochmal,
weil es nunmal so ist
nein im ernst ich glaub es liegt daran das win ein multitask betriebssystem ist. deshalb kann es gut möglich sein das wenn das ereignis ausgelöst wird und du dann überprüfst wie spät es jetzt ist, die zwei werte sich schon wider unterscheiden.
  Mit Zitat antworten Zitat
czapie

Registriert seit: 17. Nov 2002
Ort: Berlin
384 Beiträge
 
Delphi 5 Standard
 
#5

HI

  Alt 23. Feb 2003, 21:30
Hi,

ich hatte mal ein Programm geschrieben, welches den Pc zu einer bestimmten Zeit herunterfährt, und da habe ich die aktuelle Zeit und die "Herunterfahr-Zeit" jeweils in ein Edit oder Status Feld geladen und diese dann mit "=" verglichen (also Feld.caption), und das ging ohne Probleme. allerdings hats nicht geklappt diese Zeiten beide miteinander direkt zu vergleichen!

Czapie.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6
  Alt 24. Feb 2003, 09:18
Zitat von Chakotay1308:
... Na gut. Aber es würde mich interressieren, warum das so ist...
Hai Chris,

überlege doch einmal genau was Du machst:

1. Du sagst Deinem Programm das Du z.B. um genau 12:00:00 Uhr geweckt werden möchtest.

2. Jetzt prüfst du jede Sekunde die aktuelle Uhrzeit.

3. Dein Timerevent wird eventuell aber erst um 12:00:01 ausgelöst (selbst eine Milisekunde zu spät würde reichen! Schließlich prüfst Du ja auf exakte übereinstimmung von zwei Zeiten.

und eine msec nach 12 ist halt nicht genau 12

Achja:

FDateTime := StrToDateTime(DateToStr(FDate) + ' ' + TimeToStr(FTime)); müsste auch so gehen:

FDateTime := FDate + FTime;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
lodda

Registriert seit: 6. Dez 2002
65 Beiträge
 
Delphi 5 Standard
 
#7
  Alt 24. Feb 2003, 09:50
Hallo Chakotay 1308

ich glaube dass die Teimerbotschaft schon pünktlich ausgelöst wird. Das Problem ist nur, das Timerbotschaften eine sehr geringe Priotrität haben. Das heißt, dass die Botschaft eine Weile in der Warteschlange steht, bevor sie abgearbeitet wird. Bis dahin ist aber schon eine gewisse Zeit vergangen.
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#8
  Alt 24. Feb 2003, 10:08
Zitat von lodda:
Das Problem ist nur, das Timerbotschaften eine sehr geringe Priotrität haben.
Korrekt... genau genommen sind die Timer-Messages sogar die Messages mit der niedrigsten Priorität. Dh falls noch andre Messages in der Message-Queue vorhanden sind werden diese auf jeden Fall den Timer-Messages vorgezogen.
Manuel Pöter
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#9
  Alt 24. Feb 2003, 13:59
Wie kann man einem Ti´mer eine höhere Priorität zuweisen??

Chris
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#10
  Alt 24. Feb 2003, 14:04
falls du nix wirklich sehr wichtiges vor hast, ist es doch *** egal, ob der Wecker jetzt um 12:00:00,001 oder um 12:00:00,000 "hochgeht". Das dein Betriebssystem deine Anfrage innerhalb von 1ms bearbeitet kannst du wohl vergessen. Da brauchst du schon ein Realtime OS. Und auch die garantieren glaub ich nur ne Zeit von 40ms.

Also ">="
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:32 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