Autor Beitrag
Krull
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20


D7 Personal
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 208

WIN 2000 Professional, Ubuntu 5.10
D3 Prof, D7 Pers, D2005 Pers, Java (Eclipse)
BeitragVerfasst: Fr 08.07.05 20:28 
Ich würde alle 500ms (Timer) prüfen ob die eingestellte Uhrzeit erreicht ist.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Fr 08.07.05 20:55 
user profile iconMrFox hat folgendes geschrieben:
Ich würde alle 500ms (Timer) prüfen ob die eingestellte Uhrzeit erreicht ist.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20


D7 Personal
BeitragVerfasst: Fr 08.07.05 21:30 
user profile iconJRegier 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<
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 288
Erhaltene Danke: 3



BeitragVerfasst: Fr 08.07.05 21:46 
Gelöscht


Zuletzt bearbeitet von >M@steR< am Di 17.09.13 00:31, insgesamt 1-mal bearbeitet
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: 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 :

ausblenden 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. :mrgreen:

_________________
Gruß
Hansa
Krull Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20


D7 Personal
BeitragVerfasst: Sa 09.07.05 13:59 
Damit kann man dann aber immer noch nicht rechnen, oder?
JRegier
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Sa 09.07.05 14:39 
user profile iconKrull hat folgendes geschrieben:
Damit kann man dann aber immer noch nicht rechnen, oder?


Nein! Ich denke so!

ausblenden 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));  // hier das habe ich so in Java gemacht 0,2
MM := StrToInt(Copy(Uhrzeit, 3, 5));  // 3,5 ist hier bestimmt falsch da 3,2 heißen muß
SS := StrToInt(Copy(Uhrzeit, 6, 8));  // und hier dementspechend 6,2 

Result := ((HH*3600)+(MM*60)+SS)*1000;
ErinnerTimeInMilliSec := ((AH*3600)+(AM*60)+AS)*1000;

Result := ErinnerTimeInMilliSec - Result;
end;
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Sa 09.07.05 15:12 
ausblenden 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 // Vergleicht die Systemzeit mit deiner Zeit Hier 17 Uhr
  Timer1.Enabled:=false;
  if FormatDateTime('hh:mm:ss',Time)='17:00:00' then
  ShowMessage('Es ist 17:00 Uhr');
  
end;
Krull Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20


D7 Personal
BeitragVerfasst: So 10.07.05 18:18 
user profile iconJRegier hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
[...]
HH := StrToInt(Copy(Uhrzeit, 0, 2));  // hier das habe ich so in Java gemacht 0,2
MM := StrToInt(Copy(Uhrzeit, 3, 5));  // 3,5 ist hier bestimmt falsch da 3,2 heißen muß
SS := StrToInt(Copy(Uhrzeit, 6, 8));  // und hier dementspechend 6,2 
[...]


Wenn man das so ändert, gehts:

ausblenden 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! :D