Media Player | Abspielliste

  • procedure TForm1.Button5Click(Sender: TObject);
    begin
    opendialog1.execute;
    listbox1.items.Add(opendialog1.filename) ;
    listbox1.selected[0];
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var i:integer;
    begin
    listbox1.items[0];
    for i:=1 to listbox1.items.count do
    MediaPlayer1.FileName:=listbox1.Items[i];
    MediaPlayer1.open;
    MediaPlayer1.Play;
    end;

    das is der source code! habe ein button play eine listbox einen media player und eine listbox!

    MediaPlayer1.FileName:=listbox1.Items[1];

    wenn ich auf 1 bzw ne andere zahl in der listbox zuweise gez ansonst kommt ein fehler!!! wieso? kann mir da jemadn helfen! wenn ich auf play klicke soll der markierte pfad sprich die mp3 datei abspieln!! bitte um Hilfe

  • Ne ListBox fängt bei 0 an und hört bei ListBox.Items.Count - 1 auf.
    Au�erdem find ich deinen Code irgendwie nicht so gelungen, dafür würde ich keine Schleife nutzen sondern mit dem OnNotify Ereignis arbeiten. Man kann auch Sounddateien abspielen ohne den klickibunti Player zu benutzen (ich kann ihn nicht leiden...höchstens wenn er auf invisible ist), einfach mit sndPlaySound.

  • jep also ich hab zum ersten mal versucht Musik in Delphi abzuspielen also versuch ich es erst mal mit dem Player! würde ihn eh unsichtbar machen finde den ehrlich gesagt auch nicht gerade ne Wucht .... werde mir deine Idee mal anschauen trotzdem würde ich gerne meinen Fehler wissen! er soll auf die markierte Zeile in der List box zugreifen und wenn ich auf Play drück soll die Musik abgespielt werden.... das geht jedoch nicht! jemand eine Idee wieso nicht?

  • Code
    1. opendialog1.execute;listbox1.items.add(opendialog1.filename) ;

    Ich würde das so schreiben:

    Code
    1. if OpenDialog1.Execute then ListBox1.Items.Add(OpenDialog1.Filename);

    Der Unterschied ist, dass bei mir, wenn man auf Abbrechen drückt, nichts in die ListBox hinzugefügt wird, da bei Abbrechen der OpenDialog1.Execute = false ist.


    Code
    1. listbox1.selected[0];

    Für was das stehen soll blick ich jetzt nicht ganz.


    Code
    1. listbox1.items[0];

    Was soll das bewirken?
    So, jetzt kommen wir zu deiner Schleife:

    Code
    1. for i:=1 to listbox1.items.count domediaplayer1.filename:=listbox1.items[i]; mediaplayer1.open; mediaplayer1.play;

    Bei dir wird nur die zweite Schleife in der ListBox durchgeführt, d.h. er zählt i hoch und ändert jedesmal den Pfad für den Mediaplayer, also wird er nur das letzte in der ListBox abspielen. Die anderen zwei Zeilen kann man einfach mit begin und end in die Schleife dazufügen.
    Jetzt hast du noch nen kleinen Fehler gemacht, eine ListBox fängt mit 0 an, du darfst also nicht i von 1 ab zählen lassen sondern von 0 und daher ist der letzte Eintrag nicht ListBox1.Items.Count sondern ListBox1.Items.Count - 1.
    Das ganze sieht also so aus:

    Code
    1. for i:=0 to listbox1.items.count - 1 do begin MediaPlayer1.FileName:=listbox1.Items[i]; MediaPlayer1.open; MediaPlayer1.Play; end;
    Code
    1. Mediaplayer1.filename:=listbox1.items[1];

    Und für was war die Zeile da?


    Wie man ne markierte Zeile abspielt muss ich noch kurz schaun, irgendwie finde ich keine Funktion, mit der man sich die Nummer des markierten Items ausgeben kann.

  • Stimmt das mit meiner schleife war ein sehr dummer Fehler das mit dem selected und so war nur herumprobiert... ned wichtig.... jetzt fehlt nur noch die Zeile das er auf das markierte zugreift.... und da häng ich jetzt auch