Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подключение playlistoв [D7, WinXP]


Der Nechk@ssoff ©   (2006-06-02 16:07:00) 

Здрасте!Подскажите как осуществить потдержку m3u playlistов?
Файл должен открываться через opendialog в listbox.
Спасибо


antonn   (2006-07-25 14:06:00) [1]

BadTester
предлагаю застрелиться самому (уж извеняйте, что так грубо).

procedure TF_PlayList.LoadPlayList_M3U(Filename: string);
var F: TextFile;
 Buffer,  sFilename: string;  
 i, iPos1, iPos2: Integer;
 A: pPlayListItem;
begin
 AssignFile(F, Filename);
 Reset(F);
 ReadLn(F, Buffer);
 if Buffer = '#EXTM3U' then begin
   i := 1;
   while not Eof(F) do begin
     ReadLn(F, Buffer);
     iPos1 := Pos(':', Buffer);    
     iPos2 := Pos(',', Buffer);
     время_звучания:=  formatdatetime('nn:ss', StrtoInt(Copy(Buffer, iPos1 + 1, iPos2 - iPos1 - 1))/(60*60*24)) ;
     title{название в списке плейлиста} := Copy(Buffer, iPos2 + 1, length(Buffer));
     ReadLn(F, sFilename); //sFilename - путь до файла
       ListBox1.Items.Add(sFilename);
       Inc(i);
   end;
 end;
end;

procedure TF_PlayList.SavePlayList_M3U(Filename: string);
var F: TextFile;
 Buffer: string;
 i: Integer;
begin
 AssignFile(F, Filename);
 Rewrite(F);
 Writeln(F, '#EXTM3U');  
 for i := 0 to listbox1.Items.Count - 1 do begin
   Buffer := Format('#EXTINF:%d,%s', [ Integer( 333{время звучания в секундах} ), "title"  ]);
   WriteLn(F, Buffer);
   WriteLn(F, listbox1.Items[i]{путь до файла} );
     end;
 CloseFile(F);
end;

if OpenDialog.Execute then LoadPlayList_M3U(OpenDialog.filename);


BadTester   (2006-07-25 12:37:00) [2]

А вот собственно сохранение

var
pl: Integer;
Filename: String;
begin
 if ListBox.Count <> 0 then                                        
 begin                                                                  
   for pl := 0 to ListBox.Count - 1 do                                        
   begin                                                                      
     PlayListItem := pPlayListitem(Listbox.Items.Objects[pl]);
     Filename := PlayListItem^.Path;                                          
     Filename := Filename + PlayListItem^.Filename;                        
     Memo1.Lines.Add(Filename);                    
   end;
   if SaveDialog3.Execute then                        
   Memo1.Lines.SaveToFile(SaveDialog3.FileName);    
 end;
end;


BadTester   (2006-07-25 12:34:00) [3]

var
i: Integer;
begin
if OpenDialog3.Execute then
 begin
   ListBox.Clear;
   Memo1.Clear;
   Memo1.Lines.LoadFromFile(OpenDialog3.FileName);
   //Çàãðóçêà ñîáñòâåííîãî Playlist-à
{    if ExtractFileExt(OpenDialog3.FileName) = '.epl' then
     MEMO;}
   //Çàãðóçêà Playlist-à îò LightAllow - "LAP"
   if ExtractFileExt(OpenDialog3.FileName) = '.lap' then
   begin
     for i := 0 to Memo1.Lines.Count - 1 do
     begin
       if Memo1.Lines.Strings[i] = '' then
       begin
         Memo1.Lines.Delete(i - 1);
       end;
     end;
   end;
   //Çàãðóçêà Playlist-à  "M3U"
   if ExtractFileExt(OpenDialog3.FileName) = '.m3u' then
   begin
     Memo1.Lines.Delete(0);   //  Óäàëåíèå ïåðâûõ 2-óõ ñòðîê èç Memo1
     Memo1.Lines.Delete(0);   //
     for i := 0 to Memo1.Lines.Count - 1 do
     begin
       Memo1.Lines.Delete(i + 1);
     end;
   end;
   {if PlayList.Down = false then
   begin
     //PlaylistShow;
   end;}

 MEMO;
 end;
 PlayingIndex := 0;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо