![]() |
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. |
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; |
Re: Wecker
Danke, ging ja echt schnell...
werds mal ausprobieren. :mrgreen: |
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; |
Re: Wecker
Ich habe das mal aus einem Programm ausgegraben, in dem ich das aus irgendeinem Grund stehen habe.
|
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: |
Re: Wecker
Hmmm, ich glaub meine Delphi version spinnt.
Code:
Immer, wenn ich das so mache, macht der Wecker gar nichts.
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. Wenn ich aber das "<=" durch ">=" ersetze, spielt er die ganze zeit den sound... Hilfe! |
Re: Wecker
Hi,
da fällt mir auf, du hast mit
Delphi-Quellcode:
einem TDateTime-Objekt nur eine Uhrzeit übergeben.
var
stopTime: TDateTime; begin stopTime := StrToDateTime(stunde+':'+minute); 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 |
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 |
Re: Wecker
UPPPS
MIST... Naja, Danke für den Tipp... mvfG J.P. |
Re: Wecker
Liste der Anhänge anzeigen (Anzahl: 1)
Hier ist der fertige Wecker, habt ihr noch vorschläge oder fehler gefunden?
|
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 |
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 |
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... |
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. |
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 |
Re: Wecker
Gähn, der Wecker hat geklingelt :mrgreen:
Meine Anregungen:
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. |
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