Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Problem mit Abspielen von Song, außerhalb der Playlist (https://www.delphipraxis.net/8230-problem-mit-abspielen-von-song-ausserhalb-der-playlist.html)

DelphiUser7 31. Aug 2003 16:48


Problem mit Abspielen von Song, außerhalb der Playlist
 
Hallo!

Ich habe ein Problem mit dem Abspielen von Audiodateien (MP3,WAV,CDA) mit dem TMediaPlayer von Delphi;
Alle Dateien aus der PlayList spielt er ohne Probleme ab.
Der Player spielt zwar jede Datei ab, wenn ich den (selbsterstellten) 'Öffnen'-Button drücke (hab ich einprogrammiert, dass er startet, sobald eine Datei geöffnet wurde). Allerdings spielt er nicht, wenn ich die geladene Datei einmal gestoppt habe, und dann noch mal auf Play drücke. Dann zeigt er stattdessen folgende Meldung an:
Delphi-Quellcode:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EStringListError aufgetreten. Meldung: 'Listenindex überschreitet das Maximum (-1)'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
Weiß hier zufällig jemand, wie ich einerseits einen Song aus der PlayList mit dem Play-Button, und andererseits einen gerade neu geladenen Song (nicht gleichzeitig, aber 'hintereinander') abspielen kann?

Dank im Vorraus!

DelphiUser7

CalganX 31. Aug 2003 16:54

Re: Problem mit Abspielen von Song, außerhalb der Playlist
 
[LuckieImitation]Meinst du das ich hier eine Glaskugel stehen habe, in der ich deinen Source sehe?[/LuckieImitation]
:roll:

:arrow: Ein wenig Source wäre nicht schlecht. ;)

Ich würde nach dem öffnen den Filename setzen und dann per PlayButton das geladene Lied abspielen.

Chris

DelphiUser7 31. Aug 2003 17:03

Re: Problem mit Abspielen von Song, außerhalb der Playlist
 
So, hier ist die Source für meinen Play-Button und meinen Öffnen-Button;
Play-Button:
Delphi-Quellcode:
procedure TForm1.Play1Click(Sender: TObject);
begin
If Mediaplayer1.Mode = mpOpen then
   Mediaplayer1.close;
   Mediaplayer1.FileName := PlayList1.Items.Strings[PlayList1.ItemIndex];
   SongPanel.Caption := Mediaplayer1.FileName;
   SongPanel.Width :=
   Mediaplayer1.Open;
   Mediaplayer1.Play;
   Timer1.Enabled := True;
 begin
  Mediaplayer1.Open;
  Mediaplayer1.Play;
  Mediaplayer1.FileName := FileLoad1.FileName;
  Timer1.Enabled := True;
 end;
end;
Öffnen-Button:
Delphi-Quellcode:
procedure TForm1.dateioeffnen1Click(Sender: TObject);
begin
 with fileLoad1 do begin
  Filter := 'Mp3-Files(*.mp3)|*.mp3|Wav-Files(*.wav)|*.wav|MIDI-Files(*.mid)|*.mid';
 end;
  if fileLoad1.Execute then
 begin
  mediaplayer1.FileName := fileLoad1.FileName;
  SongPanel.Caption := mediaplayer1.FileName;
  mediaplayer1.open;
  mediaplayer1.Play;
  Stunden:=0;
  Minuten:=0;
  Sekunden:=0;
  Timer1.Enabled := True;
 end;
end;
Gruss
DelphiUser7

Christian Seehase 31. Aug 2003 18:03

Re: Problem mit Abspielen von Song, außerhalb der Playlist
 
Moin DelhiUser,

wenn ich mal die Fehlermeldung und Deinen Source verbinde, komme ich zu dem Schluss, dass beim erneuten Drücken Deines Play Buttons kein Eintrag in der Playlist (ListBox) ausgewählt ist, weil dann ItemIndex = -1 ist.

[EDIT]
Also solltest Du immer vorher prüfen, ob denn überhaupt noch ein Eintrag ausgewählt ist.
[/EDIT]

DelphiUser7 31. Aug 2003 18:15

Re: Problem mit Abspielen von Song, außerhalb der Playlist
 
Hallo!
Das soll ja auch gar nicht der Fall sein;
Ich will ja den gewählten Track (über den 'Öffnen-Button' gewählt) abspielen, und nicht irgendeinen aus der PlayList, falls eine erstellt und geladen wurde. Natürlich sollte letzteres auch noch möglich sein, nachdem dieser Fehler hier behoben wurde;

Gruss
DelphiUser7

P.S.: Bei WinAmp ist ja folgendes der Fall: Wenn man eine Datei über den 'Öffnen'-Button lädt, dann wird automatisch eine neue PlayList erstellt; lädt man dann aber über den Öffnen-Button noch eine zweite Datei, so wird die erste Datei (und damit die 'automatisch' erstellte PlayList) gelöscht, und mit der zweiten geladenen Datei geschieht nun das, was vorher mit der ersten Datei passiert ist(PlayList erstellt...);

Christian Seehase 31. Aug 2003 19:18

Re: Problem mit Abspielen von Song, außerhalb der Playlist
 
Moin DelphiUser,

wenn das nicht der Fall sein soll, solltest Du mal etwas verschwenderischer mit begin/end umgehen ;-)

So steht es bei Dir:

Delphi-Quellcode:
// if Open then Close. Mehr nicht.
If Mediaplayer1.Mode = mpOpen then
   Mediaplayer1.close;
   // In jedem Falle wird versucht diesen Eintrag zu lesen, und das führt zu dem Fehler
   Mediaplayer1.FileName := PlayList1.Items.Strings[PlayList1.ItemIndex];
   SongPanel.Caption := Mediaplayer1.FileName;
   SongPanel.Width :=
   Mediaplayer1.Open;
   Mediaplayer1.Play;
   Timer1.Enabled := True;
begin
  Mediaplayer1.Open;
  Mediaplayer1.Play;
  Mediaplayer1.FileName := FileLoad1.FileName;
  Timer1.Enabled := True;
end;
end;

DelphiUser7 31. Aug 2003 20:15

Re: Problem mit Abspielen von Song, außerhalb der Playlist
 
Hier noch mal zur Kontrolle: Der bereinigte Quelltext von 'Play-Button':
Delphi-Quellcode:
procedure TForm1.Play1Click(Sender: TObject);
begin
  If Mediaplayer1.Mode = mpOpen then
    Mediaplayer1.close;
    begin
    Mediaplayer1.FileName := PlayList1.Items.String [PlayList1.ItemIndex];
    SongPanel.Caption := Mediaplayer1.FileName;
    Mediaplayer1.Open;
    Mediaplayer1.Play;
    Timer1.Enabled := True;
   end;
  begin
   Mediaplayer1.Open;
   Mediaplayer1.Play;
   Mediaplayer1.FileName := FileLoad1.FileName;
   Timer1.Enabled := True;
  end;
end;
;

Könntest du vielleicht mal gucken, ob da nicht irgendwo noch ein begin und/oder end fehlt, denn mit diesem meiner Meinung nach bereinigten Quelltext tritt der Fehler immer noch auf...!! :x

Gruss
DelphiUser7

Christian Seehase 31. Aug 2003 20:27

Re: Problem mit Abspielen von Song, außerhalb der Playlist
 
Moin DelphiUser,

so wie Du es jetzt geschrieben hast steht zwar einmal begin und einmal end mehr drin als vorher, allerdings so, dass sich der Programmablauf nicht im geringsten geändert hat.

Jetzt wo ich es mir noch einmal ansehe, stelle ich fest, dass ich das ursprünglich nicht richtig gesehen hatte. Das Problem war kein fehlendes begin/end. Du benutzt in jedem Falle PlayList1.ItemIndex, was ja nicht sein darf.
Ich habe jetzt mal angenommen, dass für den Fall, dass kein Titel aus der Playlist ausgewählt wurde FileLoad1.Filename einen gültigen Dateinamen enthält

Delphi-Quellcode:
procedure TForm1.Play1Click(Sender: TObject);
begin
  If Mediaplayer1.Mode = mpOpen then Mediaplayer1.close;
  if Playlist.ItemIndex = -1 then begin
    Mediaplayer1.FileName := PlayList1.Items.String [PlayList1.ItemIndex]
    end else begin
       Mediaplayer1.FileName := FileLoad1.FileName;
    end;
    SongPanel.Caption := Mediaplayer1.FileName;
    Mediaplayer1.Open;
    Mediaplayer1.Play;
    Timer1.Enabled := True;
   end;
end;

DelphiUser7 31. Aug 2003 21:14

Re: Problem mit Abspielen von Song, außerhalb der Playlist
 
Hallo!
Danke, es funktioniert, aber du hast die beiden Anweisungen, für das Öffnen einer Datei von der PlayList bzw. per 'Öffnen'-Button vertauscht.
Das hab ich natürlich gleich geändert;
Der (endgültig bereinigte) Quelltext lautet:
Delphi-Quellcode:
procedure TForm1.Play1Click(Sender: TObject);
begin
  If Mediaplayer1.Mode = mpOpen then Mediaplayer1.close;
  If PlayList1.ItemIndex = -1 then begin
      Mediaplayer1.FileName := FileLoad1.FileName; {Datei von FileLoad1}
    end else begin
      Mediaplayer1.FileName := PlayList1.Items.Strings[PlayList1.ItemIndex]; {Datei von PlayList}
    end;
    SongPanel.Caption := Mediaplayer1.FileName;
    Mediaplayer1.Open;
    Mediaplayer1.Play;
    Timer1.Enabled := True;
end;
Gruss
DelphiUser7

Christian Seehase 31. Aug 2003 21:23

Re: Problem mit Abspielen von Song, außerhalb der Playlist
 
Moin DelphUser,

Zitat:

Zitat von DelphiUser7
...aber du hast die beiden Anweisungen, für das Öffnen einer Datei von der PlayList bzw. per 'Öffnen'-Button vertauscht.

Stimmt :wall: :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz