Thema: Delphi M3U

Einzelnen Beitrag anzeigen

Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#6

Re: M3U

  Alt 27. Sep 2008, 22:22
Mit dem AssignFile hast du wirklich recht. Keine Ahnung warum ich das überhaupt durch eine StringList ersetzt habe, war definitiv ein Fehler. Nun aber eine Frage dazu: Spielt das Clear eine Rolle ? Denn Lazarus kennt das nicht. Ich habe es daher einfach mal weggelassen, in Beispielen zu AssignFile in Lazarus taucht das Clear auch nicht auf.
Bei "??? – Boléro" erscheint weiterhin nur eine leere Meldung (=leerer Listboxeintrag). Hier die aktuelle Version, sie entspricht deinem zurecht bevorzugtem Stil mit AssignFile. In meinen Augen ist es identisch zu deinem Code, bloß dass eben die ein oder andere Variable anders heißt, aber mehr auch wirklich nicht.
Delphi-Quellcode:
var Datei : TextFile;
    Zeile, Titel, Dateiname : String; // Titel=Artist+Titel
    p, Sekunden : Integer;
begin
  AssignFile(Datei, f);
  try
    Reset(Datei);
    Sekunden := -1;
    Titel := '';
    while not EOF(Datei) do
    begin
      ReadLn(Datei, Zeile);
      Zeile := Trim(Zeile);
      Dateiname := '';
      if Pos('#EXTM3U', Zeile) = 1 then
      begin

      end else
      if Pos('#EXTINF:', Zeile) = 1 then
      begin
        Delete(Zeile, 1, 8);
        p := Pos(',', Zeile);
        if p > 0 then
        begin
          if not TryStrToInt(Copy(Zeile, 1, Pred(p)), Sekunden) then
            Sekunden := -1;
          Delete(Zeile, 1, p);
          Titel := Zeile;
        end;
      end else
      begin
        Dateiname := Zeile;
        {$IFDEF Win32}
        if Pos(':', Zeile) > 0 then
          Dateiname := Zeile
        else
        {$ENDIF}
        {$IFDEF UNIX}
        if (Length(Zeile) > 0) and (s[1] = '/') then
          Dateiname := Zeile
        else
        {$ENDIF}
          Dateiname := ExtractFilePath(f)+Zeile;
      end;
      if Dateiname <> 'then
      begin
        SetLength(Arr, Succ(Length(Arr)));
        Arr[High(Arr)].Dauer := SecToOut(Sekunden);
        Arr[High(Arr)].Artist := Titel;
        Arr[High(Arr)].Dateiname := Dateiname;
        Arr[High(Arr)].kDateiname := ExtractFileName(Dateiname);

        ShowMessage(Arr[High(Arr)].Artist);

        Sekunden := -1;
        Titel := '';
      end;
    end;
  finally
    CloseFile(Datei);
  end;
end;
  Mit Zitat antworten Zitat