Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Notify Prozedur für TMediaPlayer lässt Programm hängen. (https://www.delphipraxis.net/17363-notify-prozedur-fuer-tmediaplayer-laesst-programm-haengen.html)

Trush 3. Mär 2004 19:30


Notify Prozedur für TMediaPlayer lässt Programm hängen.
 
Hallo,

beim Aufrufen des Programms, sollen nacheinander drei Midis abgespielt werden. Mit wait:=true funktioniert dann die nächsten 10min gar nichts mehr, geht also nicht. Dann wollte ich mit hilfe von notify:=true ein OnNotify Ereignis aufrufen und mit einer globalen Variable i vom Typ integer prüfen, die wievielte Midi bereits gespielt wurde. Das Problem ist nur, dass nach dem ersten abspielen, wenn also das erste mal die Prozedur für OnNotify aufgerufen wird, dann hängt sich das Programm auf. Liegt das Problem an einem Programmierfehler oder ist die Idee komplett unbrauchbar für dieses Problem?

Code gibt's natürlich auch:
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
begin
  with Mediaplayer1 do
  begin
    FileName:= ExtractFilePath(ParamStr(0))+'Midi1.mid'; {Da die Midi files alle im selben Ordner wie das Programm liegen benutze ich ExtractFilePath(ParamStr(0)) um den Speicherort der Exe einzufügen, dass dies funktioniert sieht man ja daran, dass die erste Midi abgespielt wird.}
    Open;
    Play;
    i:=0;
    Notify:=true;
    Close;
  end;
end;

procedure TForm2.MediaPlayer1Notify(Sender: TObject);
begin
  if i=0 then
    begin;
      with Mediaplayer1 do
        begin;
          FileName:=ExtractFilePath(ParamStr(0))+'Midi2.MID';
          Open;
          Play;
          i:=1;
          Notify:=true;
          Close;
        end;
    end
  else if i=1 then
    begin;
      with Mediaplayer1 do
        begin;
          FileName:=ExtractFilePath(ParamStr(0))+'Midi3.Mid';
          Open;
          Play;
          Close;
        end;
    end;
end;
Vielen Dank für die Hilfe
Trush

Trush 7. Mär 2004 18:51

Re: Notify Prozedur für TMediaPlayer lässt Programm hängen.
 
AHHHHHHHHHHHH,

manchmal sieht man den Wald vor lauter Bäumen nicht. :wall: Man kann den FileName natürlich erst ändern, wenn man den Mediaplayer vorher beendet hat!

Wenn die Notify-Prozedur aufgerufen wird, als erstes folgende Zeile einfügen:
If Mediaplayer1.Mode = mpOpen then Mediaplayer1.close;

Ansonsten bleibt alles beim alten.

Gruß
Trush


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:56 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