Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.10.2007, 17:38
wildshaman wildshaman вне форума
Прохожий
 
Регистрация: 13.10.2007
Сообщения: 21
Репутация: 10
По умолчанию *.m3u

Как работать с плейлистами в Delphi&
Ответить с цитированием
  #2  
Старый 26.10.2007, 19:09
Аватар для Winny
Winny Winny вне форума
Продвинутый
 
Регистрация: 26.05.2007
Адрес: Планета земля, Россия, Москва
Сообщения: 620
Репутация: 30
По умолчанию

Можно загрузить в ListBox. У меня работает.
__________________

Ответить с цитированием
  #3  
Старый 26.10.2007, 19:35
wildshaman wildshaman вне форума
Прохожий
 
Регистрация: 13.10.2007
Сообщения: 21
Репутация: 10
По умолчанию

Я имел ввиду как работать с плейлистами *.m3u! То есть сохранять их из listbox? загружать их в listbox...
Ответить с цитированием
  #4  
Старый 26.10.2007, 19:54
Аватар для Winny
Winny Winny вне форума
Продвинутый
 
Регистрация: 26.05.2007
Адрес: Планета земля, Россия, Москва
Сообщения: 620
Репутация: 30
По умолчанию

Сохранять:
Код:
1
ListBox1.Items.SaveToFile('C:\playlist.m3u');
Загружать:
Код:
1
ListBox1.Items.LoadFromFile('C:\playlist.m3u');
__________________

Ответить с цитированием
  #5  
Старый 26.10.2007, 19:56
Аватар для Winny
Winny Winny вне форума
Продвинутый
 
Регистрация: 26.05.2007
Адрес: Планета земля, Россия, Москва
Сообщения: 620
Репутация: 30
По умолчанию

Плейлист m3u - простой текстовый файл со списком файлов (точнее полного пути до этих файлов). И всё! Ничего по моему мнению особенного.
__________________

Ответить с цитированием
  #6  
Старый 26.10.2007, 23:06
Аватар для zip000
zip000 zip000 вне форума
Начинающий
 
Регистрация: 24.07.2007
Сообщения: 194
Репутация: 25
По умолчанию

Winny, m3u это не просто список файлов, ты его хоть блокнотом открывал-то? А вообще его довольно просто самому обработать, при помощи TextFile.
__________________
Не профи, но и не чайник . D6 - лучше не придумали. Пока.
Ответить с цитированием
  #7  
Старый 27.10.2007, 11:32
Аватар для Winny
Winny Winny вне форума
Продвинутый
 
Регистрация: 26.05.2007
Адрес: Планета земля, Россия, Москва
Сообщения: 620
Репутация: 30
По умолчанию

Цитата:
Сообщение от zip000
Winny, m3u это не просто список файлов, ты его хоть блокнотом открывал-то? А вообще его довольно просто самому обработать, при помощи TextFile.
А я что говорил? Мона и TextFile и в ListBox загружать.
__________________

Ответить с цитированием
  #8  
Старый 27.10.2007, 13:49
Аватар для moo2k
moo2k moo2k вне форума
Активный
 
Регистрация: 05.12.2006
Адрес: где-то там...
Сообщения: 321
Репутация: 35
По умолчанию

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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;
 
          (FindComponent(Format('ListBox%d', [2 - byte(p > 0)])) as TListBox).AddItem(
            Copy(SL[i], p, length(SL[i])), nil
          );
        end;
      end;
 
    finally
      SL.Destroy;
    end;
 
  end;
end;


Код:
1
2
3
4
5
6
7
8
По дабл-клику на ListBox1 (по названию песни) - делать так:
 
procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
  ShowMessage(ListBox2.Items[ListBox1.ItemIndex]);
end;
 
(вместо ShowMessage запускай на проигрывание файл)
__________________
Программирование - это искусство и наш смысл жизни.

Последний раз редактировалось moo2k, 27.10.2007 в 13:51.
Ответить с цитированием
  #9  
Старый 28.10.2007, 11:34
wildshaman wildshaman вне форума
Прохожий
 
Регистрация: 13.10.2007
Сообщения: 21
Репутация: 10
По умолчанию

Спасибки! А как теперь можно из ListBox сохранять *.m3u gktqqkbcns& Чтобы их мог использовать и я и сторонние программы?
Ответить с цитированием
  #10  
Старый 28.10.2007, 13:46
Аватар для moo2k
moo2k moo2k вне форума
Активный
 
Регистрация: 05.12.2006
Адрес: где-то там...
Сообщения: 321
Репутация: 35
По умолчанию

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<b>//Открытие файла .m3u</b>
function NotFullPathToFullPath(FM3U, FM: string): string;
var
  Ress: string;
begin
  Ress := '';
  Result := '';
  if FM[1] = '\' then
  begin
    Result := ExtractFileDrive(FM3U) + FM;
    exit;
  end else
  begin
    if FileExists(ExtractFilePath(FM3U) + FM) then
    begin
      Result := ExtractFilePath(FM3U) + FM;
      exit;
    end;
    if FileExists(FM) then
    begin
      Result := FM;
      exit;
    end;
  end;
end;
 
procedure ReadM3U(files: string);
var List: TStringList;
  i, n: integer;
  s, a: string;
  ListItem: TListItem;
begin
  Form1.ListView1.Clear;
  List := TStringList.Create;
  try
    List.LoadFromFile(files);
    for i := 0 to List.Count - 1 do
    begin
      if List.Strings[0] = '#EXTM3U' then
      begin
        s := List.Strings[i];
        if s[1] <> '#' then
        begin
          ListItem.SubItems.Add('');
          s := NotFullPathToFullPath(Files, s);
          ListItem.SubItems[1] := s;
        end else
        begin
          if s <> '#EXTM3U' then
          begin
            Delete(S, 1, 8);
            a := '';
            n := 1;
            repeat
              a := a + s[n];
              Inc(n);
            until s[n] = ',';
            Delete(S, 1, Length(a) + 1);
            ListItem := Form1.ListView1.Items.Add;
            ListItem.Caption := s;
            ListItem.SubItems.Add(Format('%d:%.2d', [StrToInt(a) div 60, StrToInt(a) mod 60]));
          end;
        end;
      end;
    end;
  finally
    List.Free;
  end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
    ReadM3U(OpenDialog1.FileName) else exit;
end;


Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<b>//Сохранение в формат .m3u</b>
function ExtNotFullPath(FM3U, FM: string): string;
var
  i: integer;
  Ress: string;
begin
  Ress := '';
  Result := '';
  for i := 1 to Length(FM3U) do
  begin
    if FM3U[i] = FM[i] then
    begin
      Ress := Ress + FM3U[i];
      if FM3U[i] = '\' then Result := Ress;
    end else exit;
  end;
end;
 
function MinToSec(tim: string): string;
var n: integer;
  a: string;
begin
  n := 1;
  a := '';
  repeat
    a := a + tim[n];
    Inc(n);
  until tim[n] = ':';
  Delete(tim, 1, Length(a) + 1);
  result := IntToStr((StrToInt(a) * 60) + StrToInt(tim));
end;
 
procedure SaveList(SaveFile: string);
var List: TStringList;
  i: integer;
  b, s: string;
begin
  List := TStringList.Create;
  List.Add('#EXTM3U');
  for i := 0 to Form1.ListView1.Items.Count - 1 do
  begin
    s := '';
    List.Add('#EXTINF:' + MinToSec(Form1.ListView1.Items.Item[i].SubItems.Strings[0]) + ',' + Form1.ListView1.Items.Item[i].Caption);
    b := ExtNotFullPath(SaveFile, Form1.ListView1.Items.Item[i].SubItems.Strings[1]);
    if Length(b) < Length(ExtractFilePath(SaveFile)) then
    begin
      s := Form1.ListView1.Items.Item[i].SubItems.Strings[1];
      if b<>`` then
        Delete(s, 1, 2);
    end else
      s := AnsiReplaceText(Form1.ListView1.Items.Item[i].SubItems.Strings[1], b, '');
    List.Add(s);
  end;
  List.SaveToFile(SaveFile);
  List.Free;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
  begin
    if ExtractFileExt(SaveDialog1.FileName) = '.m3u' then
      SaveList(SaveDialog1.FileName) else SaveList(SaveDialog1.FileName + '.m3u');
  end;
end;

Надеюсь на твой отзыв.
__________________
Программирование - это искусство и наш смысл жизни.

Последний раз редактировалось moo2k, 28.10.2007 в 14:07.
Ответить с цитированием
  #11  
Старый 28.10.2007, 18:46
wildshaman wildshaman вне форума
Прохожий
 
Регистрация: 13.10.2007
Сообщения: 21
Репутация: 10
По умолчанию

Спасибо ОГРОМНОЕ!
Ответить с цитированием
  #12  
Старый 28.10.2007, 18:47
wildshaman wildshaman вне форума
Прохожий
 
Регистрация: 13.10.2007
Сообщения: 21
Репутация: 10
По умолчанию

А как отзыв оставить???
Ответить с цитированием
  #13  
Старый 28.10.2007, 20:10
Аватар для moo2k
moo2k moo2k вне форума
Активный
 
Регистрация: 05.12.2006
Адрес: где-то там...
Сообщения: 321
Репутация: 35
По умолчанию

Напротив с моим сообщением есть значок с весами. Вот там то и можно оставить отзыв.
__________________
Программирование - это искусство и наш смысл жизни.
Ответить с цитированием
  #14  
Старый 29.10.2007, 18:55
wildshaman wildshaman вне форума
Прохожий
 
Регистрация: 13.10.2007
Сообщения: 21
Репутация: 10
По умолчанию

А теперь подскжите как то же самое только чтобы выводились ПОЛНЫЕ пути треков из *.m3u в LISTBOX1! И как сохранять оттудаже
Ответить с цитированием
  #15  
Старый 29.10.2007, 19:45
Аватар для moo2k
moo2k moo2k вне форума
Активный
 
Регистрация: 05.12.2006
Адрес: где-то там...
Сообщения: 321
Репутация: 35
По умолчанию

Используй ExtractFileName.
__________________
Программирование - это искусство и наш смысл жизни.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:24.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025