Thema: Delphi m3u Playlist abspielen

Einzelnen Beitrag anzeigen

Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#23

Re: m3u Playlist abspielen

  Alt 9. Jan 2006, 17:42
Zitat von Nils_13:
Ok, das bringt mich aber nicht ganze weiter, da ich dann ja nur den Namen der Datei habe, aber nicht das Verzeichniss. Ich lade ja eine m3u mit LoadFromFile, jetzt muss mein Programm natürlich noch herausbekommen wo die Datei liegt.
Die Listbox mit loadfrom file zu laden ist nicht sehr gut, wie du bei wikipedia gelesen hast gibt es auch noch zeilen mit #. Am besten parset du die m3u datei erst einmal und lädst sie dann in eine liste aus der du die listbox dann 'belädst'. In etwa so:
Delphi-Quellcode:

uses ... Contnrs;

type
  tm3uitem = class(TPersistent)
  private
    fEXTINF: string;
    ffilename: string;
  public
    function getfullfilename: string;
    function getmp3file: string;
  published
    property EXTINF: string read fEXTINF write fEXTINF;
    property FileName: string read ffilename write ffilename;
end;

...

var olist: tobjectlist;

...

{ tm3uitem }

function tm3uitem.getfullfilename: string;
begin
  result:=ExpandFileName(ffilename);
end;

function tm3uitem.getmp3file: string;
begin
  result:=extractfilename(ffilename);
end;

procedure tolistbox(box: tlistbox;olist: tobjectlist);
var
  i:integer;
begin
  for i:=0 to olist.Count-1 do begin
    box.Items.Add((olist[i]as tm3uitem).getmp3file);
  end;
end;

function getfilenamebyindex(i:integer;olist: tobjectlist):string;
begin
  result:= (olist[i]as tm3uitem).getfullfilename;
end;

procedure loadm3u;
var
  slist:tstringlist;
  i:integer;
  item:tm3uitem;
  s,filename:string;
begin
    filename:='deine.m3u';
    olist.Clear;
    SetCurrentDir(FileName); // Damit relative pfad angaben geladen werden können wichtig!!!!
    slist:=tstringlist.Create;
    try
      slist.LoadFromFile(FileName);
      for i:=0 to slist.count-1 do begin
        if trim(slist[i])<>'#EXTM3Uthen begin // erste zeile nicht beachten
          s:= slist[i];
          if length(s)>0 then
          if s[1]<>'#then begin // # Zeilen nicht beachten
            item:=tm3uitem.Create();
            item.filename:=slist[i]; // dateinamen hinzufügen
            if (slist[i-1][1]='#')and(trim(slist[i-1])<>'#EXTM3U') then begin
              item.EXTINF:=slist[i-1]; // idtag info hinzufügen falls vorhanden
            end;
            olist.add(item);
          end;
        end;
      end;
    finally
      slist.Free;
    end;
  end;
end;
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat