Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Wecker (https://www.delphipraxis.net/78188-wecker.html)

J.P. 30. Sep 2006 16:00


Wecker
 
Moin!

Ich möchte in Delphi6 eine Art wecker programmieren, weiß nur nicht, was ich da nehmen soll.
Wie kann man sich die Zeit "richtig" ausspucken lassen? :gruebel:
Mit "getcurrenttime" krieg ich da nur so eine zahl, die überhaupt nicht mit der Uhrzeit übereinstimmt.
Schon mal Danke für eure Antworten.

Nils_13 30. Sep 2006 16:05

Re: Wecker
 
So könnte man es machen:
Einfach den Code der unteren Prozedur in einen Timer mit Interval=1000 einsetzen und datetime noch bei der Form eintragen.
Delphi-Quellcode:
procedure TfrmMain.datetime(const strDateTime: string; out strDate, strTime: String);
var i: Integer;
begin
  i := Pos('/', strDateTime);
  strTime := Copy(strDateTime, i+2, i);
  strDate := Copy(strDateTime, 1, length(strDateTime)-i+1);
end;

procedure TfrmMain.Timer1Timer...; // Interval = 1000
var sysDate, sysTime : String;
begin
  datetime(lvTasks.Items.Item[i].SubItems[1], d, t);
  getDateTime(sysDate, sysTime);
  if sysDate = d then
  begin
    if sysTime = t then
    begin

    end;
  end;
end;

J.P. 30. Sep 2006 16:06

Re: Wecker
 
Danke, ging ja echt schnell...
werds mal ausprobieren.
:mrgreen:

Khabarakh 30. Sep 2006 16:36

Re: Wecker
 
@Nils: Wozu dieses String-Rumgefummele :shock: ? Der Typ TDateTime wurde nicht zum Spaß erfunden.

@J.P: Versuch es lieber in etwas so:
Delphi-Quellcode:
procedure TForm.TimerTimer(Sender: TObject);
var
  stopTime: TDateTime;
begin
  stopTime := StrToDateTime(TimeEdit.Text); // Für diese Umwandlung muss der eingegebene Zeitpunkt (mit deutschen Formateinstellungen) in der Darstellung DD.MM.YYYY HH:MM:SS vorliegen, wobei auch halbe Angaben wie DD.M. oder DD.MM.YY HH:MM funktionieren
  // stopTime := EncodeDateTime(...) // Hiermit kannst du Jahr, Monat, ... getrennt angeben
  if Now >= stopTime then
    ShowMessage('AUFSTEHN!');
end;

Nils_13 30. Sep 2006 16:53

Re: Wecker
 
Ich habe das mal aus einem Programm ausgegraben, in dem ich das aus irgendeinem Grund stehen habe.

J.P. 1. Okt 2006 11:26

Re: Wecker
 
Das erste funkt irgentwie nicht richtig :wall:.
Das zweite sieht gut aus, werd das auch mal ausprobieren.

Danke für eure Antworten! :wink:

J.P. 1. Okt 2006 16:21

Re: Wecker
 
Hmmm, ich glaub meine Delphi version spinnt.

Code:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  stopTime: TDateTime;
begin
  stopTime := StrToDateTime(stunde+':'+minute); // Für diese Umwandlung muss der eingegebene Zeitpunkt (mit deutschen Formateinstellungen) in der Darstellung DD.MM.YYYY HH:MM:SS vorliegen, wobei auch halbe Angaben wie DD.M. oder DD.MM.YY HH:MM funktionieren
  // stopTime := EncodeDateTime(...) // Hiermit kannst du Jahr, Monat, ... getrennt angeben
  if Now <= stopTime then begin
  PlaySound(PChar(musik), hInstance, SND_ASYNC);
  Timer1.Enabled := false;
    end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
Opendialog1.Execute;
musik := Opendialog1.FileName;
label1.Caption := musik;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
PlaySound(PChar(musik), hInstance, SND_ASYNC);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
stunde := edit1.text;
minute := edit2.text;
label2.Caption :='Um ' + stunde + ' Uhr und '+minute+' minuten.';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
if minute = '' then Begin showmessage('Bitte geben sie eine Zeit an!');stop := 'true'; end else
if stunde = '' then Begin showmessage('Bitte geben sie eine Zeit an!');stop := 'true'; end else
if musik = '' then Begin showmessage('Bitte geben sie den Wecksound an');stop := 'True' end else
stop:='false';
if stop = 'true' then else sendmessage(form1.Handle,WM_SYSCOMMAND ,SC_minimize,0);
if stop = 'true' then else timer1.Enabled := true;

end;

procedure TForm1.WMQueryEndSession (var Msg : TWMQueryEndSession);
begin
  if MessageDlg('Sie haben noch den Wecker laufen, wollen sie den Rechner trotzdem beenden?',
                            mtConfirmation,
                            [mbYes,mbNo], 0) = mrNo then
      Msg.Result := 0
   else
      Msg.Result := 1;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
timer1.Enabled := false
end;
end.
Immer, wenn ich das so mache, macht der Wecker gar nichts.
Wenn ich aber das "<=" durch ">=" ersetze, spielt er die ganze zeit den sound...

Hilfe!

Maja Jessica 1. Okt 2006 16:46

Re: Wecker
 
Hi,

da fällt mir auf, du hast mit
Delphi-Quellcode:
var
  stopTime: TDateTime;
begin
  stopTime := StrToDateTime(stunde+':'+minute);
einem TDateTime-Objekt nur eine Uhrzeit übergeben.

Warum nicht TTime an Stelle von TDateTime und dann mit StrToTime wandeln!?
Besser finde ich aber einfach ein "Datum + Uhrzeit" an TDateTime als Weckzeit übergeben.

Wenn du dir mal "stopTime" und "Now" als Zahl anzeigen lässt dann siehst du ...

Grüsse, MJ

thkerkmann 1. Okt 2006 16:47

Re: Wecker
 
Kein Wunder:

Now ist tDateTime mit Datum und Uhrzeit

Dein gewandelter Wert ist nur die Uhrzeit ohne Datum.

Damit ist Now mit Sicherheit immer viel größer als die Prüfzeit.

Du musst also das Datum dazuaddieren.

Ich hoffe das war verständlich - will es jetzt nicht in Delphi schreiben - du musst ja auch noch was tun :-)

Gruss

Thomas

J.P. 1. Okt 2006 17:10

Re: Wecker
 
UPPPS
MIST...
Naja, Danke für den Tipp...

mvfG J.P.

J.P. 2. Okt 2006 08:09

Re: Wecker
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier ist der fertige Wecker, habt ihr noch vorschläge oder fehler gefunden?

Maja Jessica 2. Okt 2006 15:10

Re: Wecker
 
Hi,

ausprobiert, sehr gut.
Vorschlag No.1:
Wecksignal wiederholen bis entweder Stoptaste gedrückt oder 5(?) Minuten lang geweckt wurde.
(Ich kann gut und gerne bei piependen Wecker 30 Minuten lang weiterschlafen :mrgreen: )
Vorschlag No.2:
Schlummerfunktion, also Stille auf Buttonklick und in 5 (einstellbar?) Minuten wieder wecken.

Fehler? Keine gefunden :-D

MJ

NicNacMan 2. Okt 2006 15:38

Re: Wecker
 
Hi,

du solltest noch prüfen, ob die Uhrzeit gültig ist.
Wenn man nämlich Buchstaben eingibt,
bekommt man jede Sekunde eine nette Fehlermeldung :mrgreen:

NicNacMan

J.P. 2. Okt 2006 17:39

Re: Wecker
 
Werd, mich mal an eine zweite version setzen (diesmal mit allem drum und dran)
Danke für eure Tipps.

PS:Ich stell die zweite version dann auch hier rein...

J.P. 4. Okt 2006 18:40

Re: Wecker
 
Liste der Anhänge anzeigen (Anzahl: 1)
hier hab ich jetzt die 2te version.
Jetzt können auch mp3´s abgespielt werden.
Außerdem gibt es noch eine "Snooze" funktion (Nach dem wecken kann auf knopfdruck nochmal nach 5min geweckt werden)

Bitte schreibt die Fehler und vorschläge nochmal hier rein.

Maja Jessica 4. Okt 2006 23:15

Re: Wecker
 
Hi,

getestet. Mp3 auswählen und testweise abspielen klappt, nur beim Wecken spielt keine Mp3-Musik.
Und wenn ich auf "Schlummertaste" klick dann Fehlermeldung "kein mci-Gerät" geöffnet.
Dieses geschieht aber nur wenn ich vorher nicht auf "Testen" klicke.
Wenn ich vorher MP3 teste, ertönt zum Wecken aber kein MP3-Wecksignal, nur das Fenster mit den 2 Buttons erscheint.
Klick ich nun auf "noch'n paar Minuten", verkleinert sich das Fenster, nach weiteren 5 Minuten schlummer geschieht nichts (kein Ton, kein Popup).

Was noch so auffiel, Fehleingaben wie A7:b2 Uhr erzeugen viiiieeele kleine Fenster :|
Der "Filter" für das Open der Soundfiles sollte MP3 und Wav's gleichzeitig anzeigen.

Huch, jetzt wo ich schreibe funktioniert die Schlummerfunktion auf einmal. Komisch, habe die Weckzeit auf 00:01 eingestellt, wurde ohne (MP3-) Ton geweckt, klick auf Schlummer und um 00:14 düdelt es los :gruebel:

(Eventuell hat das Prog es aber auch nicht verpackt, daß ich die Uhr immer um 4 Minuten von Hand vorgestellt habe um nicht so lange warten zu müssen)

Gibt also noch was zu tun :)

Wav's noch nicht getestet ....

Gruß, MJ

Sunlight7 4. Okt 2006 23:45

Re: Wecker
 
Gähn, der Wecker hat geklingelt :mrgreen:

Meine Anregungen:
  • Es sollte genügen, wenn Du beim "Bitte Wecken" klick die Uhrzeit prüfst.
  • Die Einstellungen sollte er sich merken.
  • Prüfen ob der Wert von Std 0-23 und Min 0-59 ist.

Mal ne Frage: Schläftst Du neben Deinem PC und läßt ihn dabei Nachts durchlaufen? :gruebel:

PS: Wave funkt, nur bei kurzen Sounds wäre ne schleife gut.

Edit: Hinweis: Bitte einen Modi das Thema in Freeware oder Open-Source zu verschieben und editiere den 1. Beitrag um neue Versionen hochzuladen.

J.P. 5. Okt 2006 10:25

Re: Wecker
 
Danke für die antworten.
Stimmt, ich hab völlig vergessen, mp3 auch fürs wecken möglich zu machen grrrr....
Werd mich dann auch um den rest kümmern...


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