Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 990

/ вопрос решён /

Доброго времени суток, уважаемые эксперты!
Меня интересует такой вопрос: Можно ли как-то проигрывать различные mp3 файлы при помощи одного проигрывателя TMediaPlayer (если на каждый mp3 будет баттон отдельны)? Если да, то как это можно сделать, если mp3 файлы будут лежать в папке, например Folder, которая, в свою очередь будет лежать рядом с экзешником программы? Спасибо.

Вечперик Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Вечперик (статус: Посетитель)
Вопрос отправлен: 12 октября 2008, 19:31
Состояние вопроса: решён, ответов: 2.

Ответ #1. Отвечает эксперт: min@y™

Надо создать список этих файлов в памяти (например, TStringList), чтобы поочерёдно подсовывать их имена медиаплееру в свойство FileName.
Для составления такого списка можно использовать функции FindFirst(), FindNext(), FindClose().
Если же такой список хранить в доступном и видимом юзеру ListBox'e, то это будет подобие плей-листа, как в WinAmp, на строки которого можно быдет тыкать, т.е. запускать на воспроизведение нужный файл.

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 13 октября 2008, 08:19
Оценка за ответ: 5

Ответ #2. Отвечает эксперт: Feniks

Здравствуйте, Вечперик!
В дополнении min@y™.
А когда вы научитесь создавать список всех файлов, то можете еще и информацию из ID3Tag вытащить ;-) Примерчик в Приложении.

Приложение:
  1. {
  2. Byte 1-3 = ID 'TAG'
  3. Byte 4-33 = Titel / Title
  4. Byte 34-63 = Artist
  5. Byte 64-93 = Album
  6. Byte 94-97 = Jahr / Year
  7. Byte 98-127 = Kommentar / Comment
  8. Byte 128 = Genre
  9. }
  10.  
  11.  
  12. type
  13. TID3Tag = record
  14. ID: string[3];
  15. Titel: string[30];
  16. Artist: string[30];
  17. Album: string[30];
  18. Year: string[4];
  19. Comment: string[30];
  20. Genre: Byte;
  21. end;
  22.  
  23. const
  24. Genres : array[0..146] of string =
  25. ('Blues','Classic Rock','Country','Dance','Disco','Funk','Grunge',
  26. 'Hip- Hop','Jazz','Metal','New Age','Oldies','Other','Pop','R&B',
  27. 'Rap','Reggae','Rock','Techno','Industrial','Alternative','Ska',
  28. 'Death Metal','Pranks','Soundtrack','Euro-Techno','Ambient',
  29. 'Trip-Hop','Vocal','Jazz+Funk','Fusion','Trance','Classical',
  30. 'Instrumental','Acid','House','Game','Sound Clip','Gospel','Noise',
  31. 'Alternative Rock','Bass','Punk','Space','Meditative','Instrumental Pop',
  32. 'Instrumental Rock','Ethnic','Gothic','Darkwave','Techno-Industrial','Electronic',
  33. 'Pop-Folk','Eurodance','Dream','Southern Rock','Comedy','Cult','Gangsta',
  34. 'Top 40','Christian Rap','Pop/Funk','Jungle','Native US','Cabaret','New Wave',
  35. 'Psychadelic','Rave','Showtunes','Trailer','Lo-Fi','Tribal','Acid Punk',
  36. 'Acid Jazz','Polka','Retro','Musical','Rock & Roll','Hard Rock','Folk',
  37. 'Folk-Rock','National Folk','Swing','Fast Fusion','Bebob','Latin','Revival',
  38. 'Celtic','Bluegrass','Avantgarde','Gothic Rock','Progressive Rock',
  39. 'Psychedelic Rock','Symphonic Rock','Slow Rock','Big Band','Chorus',
  40. 'Easy Listening','Acoustic','Humour','Speech','Chanson','Opera',
  41. 'Chamber Music','Sonata','Symphony','Booty Bass','Primus','Porn Groove',
  42. 'Satire','Slow Jam','Club','Tango','Samba','Folklore','Ballad',
  43. 'Power Ballad','Rhytmic Soul','Freestyle','Duet','Punk Rock','Drum Solo',
  44. 'Acapella','Euro-House','Dance Hall','Goa','Drum & Bass','Club-House',
  45. 'Hardcore','Terror','Indie','BritPop','Negerpunk','Polsk Punk','Beat',
  46. 'Christian Gangsta','Heavy Metal','Black Metal','Crossover','Contemporary C',
  47. 'Christian Rock','Merengue','Salsa','Thrash Metal','Anime','JPop','SynthPop');
  48.  
  49. var
  50. Form1: TForm1;
  51.  
  52. implementation
  53.  
  54. {$R *.dfm}
  55.  
  56. function readID3Tag(FileName: string): TID3Tag;
  57. var
  58. FS: TFileStream;
  59. Buffer: array [1..128] of Char;
  60. begin
  61. FS := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  62. try
  63. FS.Seek(-128, soFromEnd);
  64. FS.Read(Buffer, 128);
  65. with Result do
  66. begin
  67. ID := Copy(Buffer, 1, 3);
  68. Titel := Copy(Buffer, 4, 30);
  69. Artist := Copy(Buffer, 34, 30);
  70. Album := Copy(Buffer, 64, 30);
  71. Year := Copy(Buffer, 94, 4);
  72. Comment := Copy(Buffer, 98, 30);
  73. Genre := Ord(Buffer[128]);
  74. end;
  75. finally
  76. FS.Free;
  77. end;
  78. end;
  79.  
  80. procedure TfrmMain.Button1Click(Sender: TObject);
  81. begin
  82. if OpenDialog1.Execute then
  83. begin
  84. with readID3Tag(OpenDialog1.FileName) do
  85. begin
  86. LlbID.Caption := 'ID: ' + ID;
  87. LlbTitel.Caption := 'Titel: ' + Titel;
  88. LlbArtist.Caption := 'Artist: ' + Artist;
  89. LlbAlbum.Caption := 'Album: ' + Album;
  90. LlbYear.Caption := 'Year: ' + Year;
  91. LlbComment.Caption := 'Comment: ' + Comment;
  92. if (Genre >= 0) and (Genre <=146) then
  93. LlbGenre.Caption := 'Genre: ' + Genres[Genre]
  94. else
  95. LlbGenre.Caption := 'N/A';
  96. end;
  97. end;
  98. end;


Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 13 октября 2008, 11:57
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 13 октября 2008, 13:48; участников в обсуждении: 3.
Вечперик

Вечперик (статус: Посетитель), 13 октября 2008, 08:43 [#1]:

Большое спасибо... начну разбираться... только для начала - не могли бы Вы подсказать, как создать TStringList? Спасибо...
min@y™

min@y™ (статус: Доктор наук), 13 октября 2008, 10:00 [#2]:

uses Classes
 
var
  List: TStringList;
 
// Создать:
  List:= TStringList.Create();
 
// Освободить память:
  List.Free();
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вечперик

Вечперик (статус: Посетитель), 13 октября 2008, 13:30 [#3]:

Feniks, min@y™ спасибо! Буду разбираться!
Feniks

Feniks (статус: Бакалавр), 13 октября 2008, 13:48 [#4]:

Всегда пожалуйста ;-)
Будут вопросы, спрашивайте.

31 января 2011, 19:32: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:42
Выполнено за 0.02 сек.