Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Pfad aus ListBox für Bass.dll auslesen (https://www.delphipraxis.net/82184-pfad-aus-listbox-fuer-bass-dll-auslesen.html)

Marcasso 8. Dez 2006 09:18


Pfad aus ListBox für Bass.dll auslesen
 
hallo, ich arbeite im mom an einem mp3 player als schulprojekt und habe (nur) noch bis ende januar zeit..
in form2 habe ich eine listbox, in der alle lieder mit ner opendialog geöffnet werden
MP ist der BassDllPlayer
mit direkter pfadangabe habe ich es schon geschafft ein lied abzuspielen, jedoch weiß ich nicht genau wie ich den pfad aud ner listbox auslese...
Delphi-Quellcode:
procedure TForm1.PlayClick(Sender: TObject);
begin
  MP.play(form2.ListA.Items.GetNamePath);
  //MP.play('C:\Dokumente und Einstellungen\Peppi\Desktop\Musik\No Signs.mp3');
  bar.Max := MP.length;
end;

danke

Relicted 8. Dez 2006 09:24

Re: Pfad aus ListBox für Bass.dll auslesen
 
moin!

form2.ListA.Items.GetNamePath sollte form2.ListA.Items.Text heißen...

damit hast du immer den im moment selektierten eintrag der listbox.

Gruß
Reli

Marcasso 8. Dez 2006 09:30

Re: Pfad aus ListBox für Bass.dll auslesen
 
habs probiert, dann bringt er mir aber den fehler Inkompatible Typen: 'String' und TStrings'

ich möchte dann später auch dass er nicht nur ein lied abspielt, sondern fortlaufend alle lieder in der liste. wie realisiere ich das denn am besten? kann ich da in ein dynamisches array den pfad reinschreiben und dann im player auslesen?

Relicted 8. Dez 2006 09:46

Re: Pfad aus ListBox für Bass.dll auslesen
 
welche aufrufparameter hat denn play? ich habe gerade den quelltext nicht hier - bin auf der arbeit.

wenn er nen tstrings erwartet dann will er wohl schon ne liste von liedern die er spielen soll.
dann übergibst du einfach die Listbox.Items

Marcasso 8. Dez 2006 09:52

Re: Pfad aus ListBox für Bass.dll auslesen
 
also der player will nen string...
Delphi-Quellcode:
  mp.play(filename:string);

Marcasso 8. Dez 2006 10:03

Re: Pfad aus ListBox für Bass.dll auslesen
 
also das mit dem abspielen aus der listbox hab ich jetzt hinbekommen :)
nur müsste es jetzt och so funktionieren, dass ich mehrere nacheinander spielen kann und nicht nur das ausgewählte, ebenso soll ich ja auf nen klick auf nächstes lied und vorheriges leid eben diese lieder spielen können...
werd mir mal ein paar gedanken machen, wenn ihr was wisst wär ich euch auch sehr dankbar!

Delphi-Quellcode:
procedure TForm1.PlayClick(Sender: TObject);
var pfad:string;
begin
  pfad := form2.ListA.Items.Strings[form2.listA.itemindex];
  MP.play(pfad);
  //MP.play('C:\Dokumente und Einstellungen\Peppi\Desktop\Musik\No Signs.mp3');
  bar.Max := MP.length;
end;

Relicted 8. Dez 2006 10:06

Re: Pfad aus ListBox für Bass.dll auslesen
 
ah okay...

ja dann merk dir doch den momentanen itemindex in ner membervariable und spiel dann bei nem klick auf nächstes lied die membervariable mit + 1 ab ... andersrum halt mit -1 und dann hast es fertig :o)

Marcasso 8. Dez 2006 10:08

Re: Pfad aus ListBox für Bass.dll auslesen
 
stimmt, werde ich gleich mal probieren :-)
und wenn ein lid zu ende ist und das nächste abgespielt werden soll werde ich dann auch die variable um 1 hochzählen :-)

Marcasso 8. Dez 2006 10:51

Re: Pfad aus ListBox für Bass.dll auslesen
 
also das hat soweit schon ganz gut geklappt, nur wenn ich zum letzten, bzw wieder zum ersten lied springe stürzt er ab...

ich habe eine extra unit procedures in der die procedure MPplay ist:

Delphi-Quellcode:
procedure MPPlay(PlayMp:Boolean);
var pfad :string;
begin
  if form2.ListA.Count <> 0 then
    begin
     pfad := form2.ListA.Items.Strings[form2.listA.itemindex];
     form1.MP.play(pfad);
     form1.bar.Max := form1.MP.length;
     form1.timer1.Enabled := true;
    end;
  end;
der play button
Delphi-Quellcode:
procedure TForm1.PlayClick(Sender: TObject);
var pfad:string;
begin
  procedures.MPPlay(true);
end;
vor
Delphi-Quellcode:
procedure TForm1.vorClick(Sender: TObject);
var pfad:string;
begin
  form2.ListA.ItemIndex:=form2.ListA.ItemIndex+1;
  pfad := form2.ListA.Items.Strings[form2.listA.itemindex+1];
  procedures.MPPlay(true);
end;
und zurück
Delphi-Quellcode:
procedure TForm1.rueckClick(Sender: TObject);
var pfad:string;
begin
  form2.ListA.ItemIndex:=form2.ListA.ItemIndex-1;
  pfad := form2.ListA.Items.Strings[form2.listA.itemindex-1];
  procedures.MPPlay(true);
  bar.Max := MP.length;
end;

Marcasso 8. Dez 2006 12:51

Re: Pfad aus ListBox für Bass.dll auslesen
 
vor und zurück habe ich jetz so abgeändert, dass das programm nicht mehr abstürtzt. scheint so auch prima zu funktioneren...

vor
Delphi-Quellcode:
procedure TForm1.vorClick(Sender: TObject);
var pfad:string;
begin
  if (form2.ListA.Count <> 0) and (form2.ListA.ItemIndex <> -1) then
    begin
      if form2.ListA.ItemIndex = form2.ListA.Count -1 then
        form2.ListA.ItemIndex := 0
      else
        if form2.ListA.ItemIndex <> form2.ListA.Count-1 then
          form2.ListA.ItemIndex := form2.ListA.ItemIndex+1;
        form2.ListB.ItemIndex := form2.ListA.ItemIndex;
      end
    else
      if form2.ListA.ItemIndex = -1 then
        begin
          form2.ListA.ItemIndex := 0;
          form2.ListB.ItemIndex := form2.ListA.ItemIndex;
        end;
  procedures.MPPlay(true);
end;
zurück
Delphi-Quellcode:
procedure TForm1.rueckClick(Sender: TObject);
var pfad:string;
begin
  if form2.ListA.Count <> 0 then
    if form2.ListA.ItemIndex = 0 then
      form2.ListA.ItemIndex := form2.ListA.Count -1
    else
      if form2.ListA.ItemIndex <> 0 then
        form2.ListA.ItemIndex := form2.ListA.ItemIndex -1;
    form2.ListB.ItemIndex := form2.ListA.ItemIndex;
   if form2.ListA.ItemIndex = -1 then
   begin
     form2.ListA.ItemIndex:=0;
     form2.ListB.ItemIndex:=form2.ListA.ItemIndex;
   end;
  procedures.MPPlay(true);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:29 Uhr.

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