Im FormCreate rufst Du Write auf, bevor Du alles initialisierst, ich rate mal munter drauf los, das deswegen Dein Wecker sofort auslöst, weil er glaubt es ist 00:00:00 Uhr und er noch auf 00:00 Uhr Weckzeit eingestellt ist.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
...
alpha:=TAlarmclock.create;
write; // <- Geratener Auslöser 1 des Alarms
alpha.Onchange:= Write;
alpha.Start; // <- Geratener Auslöser 2 des Alarms
alpha.setsec(StrToInt(formatdatetime('ss',time))); // <- Uhrzeit setzen
alpha.setmin(StrToInt(formatdatetime('nn',time)));
alpha.sethour(StrToInt(formatdatetime('hh',time)));
x:= 86400-(alpha.gethour * 3600) - (alpha.getmin*60) - (alpha.getsec);
label5.caption:=IntToStr(x);
HourWeck := strtoint(Edit2.Text);
MinWeck := strtoint(Edit3.Text);
alpha.SetAlarmTime(HourWeck,MinWeck); // <- Weckzeit setzen
end;
Zusätzlich würd' ich nicht unbedingt reservierte Bezeichner wie Write als Procedurenbezeichner verwenden.
Ein "=true" kannst Du Dir sparen, genauso wie "dataPfad", die so nebenbei gesagt auch als lokale Variable gesetzt hätte sein sollen.
Delphi-Quellcode:
If alpha.AlarmOn then begin
MediaPlayer1.FileName:=Edit1.Text;
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
Was noch fehlt ist das schließen der Datei, wenn der Alarm zu Ende is
Grüßle!