| Autor |
Beitrag |
Krull
      
Beiträge: 20
D7 Personal
|
Verfasst: Fr 08.07.05 20:18
Moin!
Ich will zu einer bestimmten Uhrzeit einen Sound abspielen. Das möchte ich über einen Counter realisieren, der die Differenz der gewünschten Alarmzeit und der Aktuellen als Interval hat.
Leider sind die Typen inkompatibel, ich kann weder die Differenz noch den Interval mit der aktuellen Zeit verrechnen.
Oder habt ihr eine bessere Idee?
MfG
Krull
|
|
MrFox
      
Beiträge: 208
WIN 2000 Professional, Ubuntu 5.10
D3 Prof, D7 Pers, D2005 Pers, Java (Eclipse)
|
Verfasst: Fr 08.07.05 20:28
Ich würde alle 500ms (Timer) prüfen ob die eingestellte Uhrzeit erreicht ist.
Delphi-Quelltext 1:
| if ALARMZEIT <= Now then bla bla |
Wobei Alarmzeit eine Variable vom Typ TDateTime ist
_________________ Das Leben auf der Erde mag zwar teuer sein, aber eine jährliche Rundreise um die Sonne ist gratis mit dabei.
|
|
JRegier
      
Beiträge: 1268
Win XP Home, Prof, 2003 Server
D6 Enterprise
|
Verfasst: Fr 08.07.05 20:55
MrFox hat folgendes geschrieben: | Ich würde alle 500ms (Timer) prüfen ob die eingestellte Uhrzeit erreicht ist.
Delphi-Quelltext 1:
| if ALARMZEIT <= Now then bla bla |
Wobei Alarmzeit eine Variable vom Typ TDateTime ist |
Ich habe mal für ein TerminKalender eine Erinnerungs Funktion geschrieben und habe einfach ein den Interval für den Timer millisekunden genau berechnen
lassen und den Timer mit diesem Wert initialisiert und er meldet sich pünktlich zur richtigen Zeit!
Im Fall Erinnerungsfunktion habe ich richtige classen geschrieben mit den Infos zur Erinnerung und eigenen Timer den ich auch initialisiert habe gestartet
und in eine Liste eingefügt, braucht man sich nicht um die Zeitprüfung kümmern alles Automatic! Mit Java!
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 08.07.05 21:20
Wenn es wirklich wichtig ist, daß der Zeitpunkt genau getroffen werden muß, dann ist es mit den Millisekunden aber bereits vorbei ! Sollte der Delphi-Linker da was machen oder es wird sogar gerade eine CD gebrannt, dann klappt das nicht !
_________________ Gruß
Hansa
|
|
Krull 
      
Beiträge: 20
D7 Personal
|
Verfasst: Fr 08.07.05 21:30
JRegier hat folgendes geschrieben: |
Ich habe mal für ein TerminKalender eine Erinnerungs Funktion geschrieben und habe einfach ein den Interval für den Timer millisekunden genau berechnen
lassen und den Timer mit diesem Wert initialisiert und er meldet sich pünktlich zur richtigen Zeit!
|
Wie kann ich mit der aktuellen Uhrzeit rechnen ohne einen Fehler mit den Variablentypen zu bekommen?
|
|
>M@steR<
      
Beiträge: 288
Erhaltene Danke: 3
|
Verfasst: Fr 08.07.05 21:46
Zuletzt bearbeitet von >M@steR< am Di 17.09.13 00:31, insgesamt 1-mal bearbeitet
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 08.07.05 23:46
So liest man aber nur die Zeit aus, um sie danach im Nichts hängen zu lassen !! Schreibe die Zeile mal irgendwo ins Programm und wundere Dich über die Compiler-Meldungen.
Das muß doch einer Variablen zugewiesen werden, um sie auch anzuzeigen/zu verrechnen ! In diesem Beispiel wird nur die momentane Uhrzeit in einem Label angezeigt :
Delphi-Quelltext 1:
| lblUhrzeit.Caption := FormatDateTime('hh:mm',now); |
Ein Timer ist fast das einfachste, was es gibt ! Wer ist als erster beleidigt ? Es ist nämlich entsetzlich. 
_________________ Gruß
Hansa
|
|
Krull 
      
Beiträge: 20
D7 Personal
|
Verfasst: Sa 09.07.05 13:59
Damit kann man dann aber immer noch nicht rechnen, oder?
|
|
JRegier
      
Beiträge: 1268
Win XP Home, Prof, 2003 Server
D6 Enterprise
|
Verfasst: Sa 09.07.05 14:39
Krull hat folgendes geschrieben: | | Damit kann man dann aber immer noch nicht rechnen, oder? |
Nein! Ich denke so!
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| Timer.Interval := GetDifferencToTime(16, 00, 00);
function GetDifferencToTime(AH, AM, AS) : Integer; begin var Uhrzeit : String; HH, MM, SS : Integer; ErinnerTimeInMilliSec : Integer; begin
Uhrzeit := FormatDateTime('hh:mm:ss',now);
HH := StrToInt(Copy(Uhrzeit, 0, 2)); MM := StrToInt(Copy(Uhrzeit, 3, 5)); SS := StrToInt(Copy(Uhrzeit, 6, 8)); Result := ((HH*3600)+(MM*60)+SS)*1000; ErinnerTimeInMilliSec := ((AH*3600)+(AM*60)+AS)*1000;
Result := ErinnerTimeInMilliSec - Result; end; |
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Sa 09.07.05 15:12
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Timer1Timer(Sender: TObject); begin Timer1.Interval:=100; if FormatDateTime('hh:mm:ss',Time)='17:00:00' then Timer1.Enabled:=false; if FormatDateTime('hh:mm:ss',Time)='17:00:00' then ShowMessage('Es ist 17:00 Uhr'); end; |
|
|
Krull 
      
Beiträge: 20
D7 Personal
|
Verfasst: So 10.07.05 18:18
JRegier hat folgendes geschrieben: | Delphi-Quelltext 1: 2: 3: 4: 5:
| [...] HH := StrToInt(Copy(Uhrzeit, 0, 2)); MM := StrToInt(Copy(Uhrzeit, 3, 5)); SS := StrToInt(Copy(Uhrzeit, 6, 8)); [...] | |
Wenn man das so ändert, gehts:
Delphi-Quelltext 1: 2: 3: 4: 5:
| [...] HH := StrToInt(Copy(Uhrzeit, 1, 2)); MM := StrToInt(Copy(Uhrzeit, 4, 2)); SS := StrToInt(Copy(Uhrzeit, 7, 2)); [...] |
Vielen Dank für die Hilfe! 
|
|