, и потом проходи по всем строкам и удаляй ненужную информацию: #EXTM3U и #EXTINF с помощью StringReplace ...
Или ты имеешь в виду что-то другое?
Артемий
31.01.2007 17:37
Цитата
Просто запихнуть в ListBox названия песен и имена файлов, хранящиеся в M3U файле?
И ещё добавить в массив строк путь к каждой песне, которая есть в M3u файле..не совсем пойму как это можно сделать.в принципе хотелось узнать как считать из m3u файла все данные, типа путь, название. А потом при шелчке по песне медиаплеер читает из массива путь к песне, и играет..че-то короче я намутил.
volvo
31.01.2007 17:58
if OpenDialog1.Execute then begin ListBox1.Items.LoadFromFile(OpenDialog1.FileName);
for i := 0 to ListBox1.Items.Count - 1 do if (Pos('#EXTM3U', ListBox1.Items[i]) = 0) and (pos('#EXTINF', ListBox1.Items[i]) = 0) then begin SetLength(s, length(s) + 1); s[pred(length(s))] := ListBox1.Items[i]; end; end;
?
Только вот я не пойму, зачем тебе еще массив надо? Есть же ListBox.Items, которые хранят все, что нужно...
Артемий
1.02.2007 17:58
спасибо за код.Массив нужен так - допустим в items только имена, а путь при щелчке по имени к файлам как получить? я подумал что все пути к файлу добавить в массив, и при щелчке по item,у Листбокса в filename плеера добавляется нужный путь из массива и все добро играется..
volvo
1.02.2007 18:54
На форме - 2 ListBox-а: один хранит названия песен (ListBox1, именно так должен называться), второй (возможно - скрытый, ListBox2) - пути к ним... Заполнять так:
procedure TForm1.Button1Click(Sender: TObject); var i: integer; p: integer; SL: TStringList; begin if OpenDialog1.Execute then begin
SL := TStringList.Create; try
SL.LoadFromFile(OpenDialog1.FileName); for i := 0 to SL.Count - 1 do begin if (Pos('#EXTM3U', SL[i]) > 0) then Continue else begin p := pos('#EXTINF', SL[i]); if p > 0 then p := Pos(',', SL[i]) + 1;