Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Probleme bei Wecker (https://www.delphipraxis.net/5691-probleme-bei-wecker.html)

Christian Seehase 22. Jun 2003 01:00

Moin DJ-SPM,

ein kleines Beispiel:

Delphi-Quellcode:
var
  tiWecker : TTime;
  tiDiff  : TTime;
  tiNow   : TTime;

begin
  tiWecker := StrToTime('02:00');
  tiDiff  := StrToTime('00:01');
  tiNow   := Time;
  if (tiNow >= tiWecker) and (tiNow < (tiWecker+tiDiff)) then ShowMessage('Klingeling');
end;
Ein Tip noch: TIniFile kennt auch die Methoden WriteTime und ReadTime.

TheMiller 22. Jun 2003 13:24

OK,

ja. wie soll ich's beschrieben: WEnn ich deinen Code benute, Christian, dann lädt er in diesem Zeitraum mehrere Showmessage Dialoge (jede Sekunde einen).

Lucky hat was von "globale Variable" gesagt, weisst du darüber bescheid? Es kann doch nicht so schwer sein, einen Wecker zu erstellen ;-)

Achso.. Christain:
Danke für die viele Hilfe...


CIao
DJ-SPM

Christian Seehase 22. Jun 2003 13:44

Moin DJ-SPM,

das war ein Beispiel wie Du einen Bereich abfragen kannst.

Ansonsten musst Du alles so deklariert haben wie bisher.

TheMiller 22. Jun 2003 21:29

Hey Chris,

ich weiss, ich spiele mit deinen Nerven, aber eine Frage noch. Wie kann ich die Zeit und ZeitDifferenz durch iniEinträge erstezen? Habe es so probiert und er dudelt die ganze Zeit die Musik ab. Puh, ich hasse Wecker... :-)

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  tiWecker : TTime;
  tiDiff  : TTIme;
  tiNow   : TTIme;
  ini     : TInifile;
  time1    : TTime;
  time2    : TTIme;
  begin
ini:=Tinifile.Create('C:\Programme\SPM-APSS\settings.ini');
try
time1:=ini.Readtime('Wecker','time1',time);
time2:=ini.Readtime('Wecker','Time2',time);
  tiwecker := time1;
  tidiff := time2;
  tiNow  := time;
  if (tiNow >= tiWecker) and (tiNow < (tiWecker+tiDiff)) then Mediaplayer1.Play;
finally
ini.free;
end;
end;
end.
HILFE!!!!! plz

[€dit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit]

Christian Seehase 23. Jun 2003 11:27

Moin DJ-SPM,

hast Du denn mal kontrolliert, was in time1 und time2 steht?
Immerhing übergibst Du als Defaultwert die aktuelle Zeit.

TheMiller 23. Jun 2003 15:18

Hey,

Ja, habe ich. time1 war 19:05 und time 2 19:07. Die aktuelle Zeit war 19:00 Uhr und da fings dann an... Was mache ich denn bloß falsch??

Ciao

Christian Seehase 23. Jun 2003 15:23

Moin DJ-SPM,

die Zeit tiDiff gibt die Differenz vor also z.b. 1 Minute.
Du hast aber 19 Stunden 7 Minuten als Bereich zugelassen.
Dass dann lange funktioniert ist klar ;-)

Das Beispiel enthielt ja:
Delphi-Quellcode:
  tiWecker := StrToTime('02:00');
  tiDiff  := StrToTime('00:01');
also Weckzeit 2 Uhr morgens, es darf bis 2 Uhr 1 geweckt werden.

Deshalb ja auch:

Delphi-Quellcode:
tiWecker+tiDiff
;-)

TheMiller 23. Jun 2003 20:21

Ok, ich denke das ist jetzt so ziemlich das Ende deiner Nerven, sowie das Ende meiner Gedult...

Ich habe jetzt den Code so, nachden ich deinen Thread gelesen habe...
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  tiWecker : TTime;
  tiDiff  : TTime;
  tiNow   : TTime;
  time1    : String;
  time2    : String;
  ini     : TInifile;
begin
ini:=TInifile.Create('C:\Programme\SPM-APPS\settings.ini');
try
  time1    :=ini.ReadString('Wecker','time1',text);
  time2    :=ini.ReadString('Wecker','time2',text);
[color=#f60000] tiWecker := StrToTime(time2); //(21:16)
  tiDiff  := StrToTime(time1); //(21:15)[/color]
  tiNow   := Time;
  if (tiNow >= tiWecker) and (tiNow < (tiWecker+tiDiff)) then MediaPlayer1.Play;
  finally
  ini.free;
  end;
  end;
  end.
Naja, was macht's?? Klingeling... auch noch um 21:20... in 10 Jahren um 22:20 bestimmt auch noch. *anfallbekomm*

Wo ist der Fehler?

[edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit]

Christian Seehase 23. Jun 2003 20:59

Moin DJ-SPM,

Zitat:

Zitat von DJ-SPM
Ok, ich denke das ist jetzt so ziemlich das Ende deiner Nerven,

Wohl eher nicht, hat mehr was von einer Herausforderung :mrgreen:

Also versuch' ich das mal anders zu erklären:

Bei mir haben die Variablen folgende Aufgabe:
  1. tiWecker
    Diese Variable soll die Weckzeit beeinhalten
  2. tiDiff
    Diese Variable soll die Anzahl Minuten beinhalten, um die die Weckzeit überschritten werden darf, bevor der Alarm nicht mehr ausgelöst werden soll, und keine Uhrzeit

In Deinem Beispiel wären es dann also 21 Stunden, 15 Minuten. Oder in Minuten: (21*60)+15 = 1275 Minuten.
Das heisst: Die Weckzeit dürfte in Deinem Beispiel um 1275 Minuten überschritten werden, bevor sie nicht mehr gültig ist.

Dein Code wäre völlig in Ordnung, nur die Werte die Du verwendest sind es nicht.

Ach, von wegen
Zitat:

Zitat von DJ-SPM
*anfallbekomm*

Benutze doch bitte die Delphi Tags, damit Daniel B das nicht plötzlich sagt ;-)

TheMiller 23. Jun 2003 21:42

Ok, danke für deine Hilfe

nun, jetzt kommt das große ABER:
Es will auch so nicht so, wie wir wollen. Ich denke, dass das Prog so rechnet:

Code:
if (tiNow >= tiWecker) and (tiNow < (tiWecker+tiDiff)) then MediaPlayer1.Play
WENN (jetzige Zeit größer als Weckzeit aus INI) UND (jetzige Zeit kleiner als Weckzeit+Differenz) ist, dann Spiele lied ab...

das wäre vollkommen richtig. Er will nur nicht. Kann es sein, dass es an:

-ini.Readtime,
-If-Anweisung,
-Timerintervall (bei mir 1000),
-an Inifile selbst,
-Stringumrechnung

liegt? Hier nochmal mein Code, so wie er (berichtigt ist):

Code:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  tiWecker : TTime;
  tiDiff  : TTIme;
  tiNow   : TTIme;
  ini     : TInifile;
  time1    : TTime;
  time2    : TTime;
  begin
ini:=Tinifile.Create('C:\Programme\SPM-APSS\settings.ini');
try
time1:=ini.Readtime('Wecker','Time1',time);
time2:=ini.Readtime('Wecker','Time2',time);
  tiwecker := Time1;
  tidiff := Time2;
  tiNow  := time;
  if (tiNow >= tiWecker) and (tiNow < (tiWecker+tiDiff)) or (tiNow then MediaPlayer1.Play;
finally
ini.free;
end;
end;
end.
Achso, mein Ereignis liegt im OnTimer Ereignis.
Hm. kannst du es mal bitte versuchen, bei dir zu coden. Auch, wenn's geht mit Ini-File-Auslesung.

Da hast du deine Herausforderung *g*
Achso, danke nochmal. Bekommst auch mein ganzes Projekt, wenn du willst (nein, ist nicht nur der wecker *g*)

Achso, noch eins:
Was sind Delphi Tags. Werde sie benutzen, wenn ich weiss, was das ist ;-)

Ciao


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:25 Uhr.
Seite 2 von 3     12 3      

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