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

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

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

Delphi.int.ru Expert

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

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

#   

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


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

Подробнее »



Вопрос # 367

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

Здравствуйте. Я так и не понял насчет MediaPlayer1.
Вопрос был такой.
Как мне, скопировав в папку несколько песен (например, песен десять),
нажав на кнопку, они должны проигрываться по очереди (одна за другой).
Я сразу напишу, что я начинающий, поэтому не знаю как их
загрузить в ListBox1, (составив список песен), а потом
проигрывать их по очереди. Если можно то напишите
поподробнее. Заранее благодарен.

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

Вопрос задал: Толков Геннадий Викторович (статус: Посетитель)
Вопрос отправлен: 2 марта 2007, 23:24
Состояние вопроса: решён, ответов: 3.

Ответ #1. Отвечает эксперт: Aymenel

Здравствуйте, Толков Геннадий Викторович!
Может вам стоит для начала написать что-нибудь
по проще и почитать литературку для начинающих. Потому что если вы не умеете работать со стандартными компонентами, то все наши советы в итоге сведутся к тому, что за вас кто-то напишет эту программу.

Ответ отправил: Aymenel (статус: 2-ой класс)
Время отправки: 2 марта 2007, 23:36
Оценка за ответ: 3

Ответ #2. Отвечает эксперт: Роман

Здравствуйте, Толков Геннадий Викторович!Вот вам два примера.Первый выводит в ListBox все файлы каталога.Второй - Функция предоставляет Вам каждый раз новое имя файла,а если список файлов исчерпан, начинает перебор снова.Может пригодиться для последовательного воспроизведения файлов.

Приложение:
  1. 1.===========================
  2. procedure ListFileDir(Path: string; FileList: TStrings);
  3. var
  4. SR: TSearchRec;
  5. begin
  6. if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
  7. begin
  8. repeat
  9. if (SR.Attr <> faDirectory) then
  10. begin
  11. FileList.Add(SR.Name);
  12. end;
  13. until FindNext(SR) <> 0;
  14. FindClose(SR);
  15. end;
  16. end;
  17.  
  18. procedure TForm1.Button1Click(Sender: TObject);
  19. begin
  20. ListFileDir('C:WINDOWS', ListBox1.Items);
  21. end;
  22. ==================================
  23. 2.=============================
  24. function GetNextFileName(Path: string): string;
  25. const
  26. ListFileName = 'ListFile.lst';
  27. FileMask = '*.*' ;
  28. var
  29. SearchRec: TSearchRec;
  30. begin
  31. with TStringList.Create do
  32. begin
  33. if FileExists(ListFileName) then
  34. begin
  35. LoadFromFile(ListFileName);
  36. end;
  37. if FindFirst(IncludeTrailingBackslash(Path) + FileMask,
  38. faAnyFile and not faDirectory,
  39. SearchRec) = 0 then
  40. begin
  41. repeat
  42. Result := SearchRec.Name;
  43. if (FindNext(SearchRec) <> 0) then
  44. begin
  45. Clear;
  46. end;
  47. until (IndexOf(Result) = -1);
  48. Add(Result);
  49. FindClose(SearchRec);
  50. end
  51. else
  52. begin
  53. Result := '';
  54. end;
  55. SaveToFile(ListFileName);
  56. Free;
  57. end;
  58. end;
  59. procedure TForm1.Button1Click(Sender: TObject);
  60. begin
  61.  
  62. end;
  63. ===================================


Ответ отправил: Роман (статус: 5-ый класс)
Время отправки: 3 марта 2007, 00:34
Оценка за ответ: 5

Ответ #3. Отвечает эксперт: Дима Гусаков

Здравствуйте, Толков Геннадий Викторович!
Исходник в прикреплённом файле.
К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)

Приложение:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, Buttons, MPlayer, StdCtrls, ExtCtrls;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. ListBox1: TListBox;
  12. MediaPlayer1: TMediaPlayer;
  13. SpeedButton1: TSpeedButton;
  14. Label1: TLabel;
  15. Label2: TLabel;
  16. Timer1: TTimer;
  17. CheckBox1: TCheckBox;
  18.  
  19. procedure PlayList(Path:String);
  20. procedure Play;
  21. procedure FormCreate(Sender: TObject);
  22. procedure ListBox1Click(Sender: TObject);
  23. procedure SpeedButton1Click(Sender: TObject);
  24.  
  25. private
  26. { Private declarations }
  27. public
  28. { Public declarations }
  29. end;
  30.  
  31. var
  32. Form1: TForm1;
  33. cDir: String;
  34.  
  35. implementation
  36.  
  37. {$R *.dfm}
  38.  
  39. procedure TForm1.PlayList(Path:String);
  40. var
  41. LpBuf: PChar;
  42. sWinDir: String;
  43.  
  44.  
  45.  
  46. begin
  47. ListBox1.Clear;
  48.  
  49. if FindFirst(Path + '*.mp3', faAnyFile, SearchRec) = 0 then
  50. begin
  51. ListBox1.Items.Add(SearchRec.Name);
  52. while (FindNext(SearchRec) = 0) do
  53. ListBox1.Items.Add(SearchRec.Name);
  54. end;
  55.  
  56. end;
  57.  
  58.  
  59. procedure TForm1.Play;
  60. begin
  61. Label1.Caption := ListBox1.Items[ListBox1.ItemIndex];
  62. MediaPlayer1.FileName := cDir + '' + ListBox1.Items[ListBox1.ItemIndex];
  63.  
  64. try
  65. MediaPlayer1.Open;
  66. except
  67. on EMCIDeviceError do
  68. begin
  69.  
  70. Exit;
  71. end;
  72. end;
  73. MediaPlayer1.Play;
  74. min := 0;
  75. sec := 0;
  76. Timer1.Enabled := True;
  77.  
  78. end;
  79.  
  80. procedure TForm1.FormCreate(Sender: TObject);
  81. begin
  82.  
  83. PlayList('');
  84. ListBox1.ItemIndex := 0;
  85. Label1.Caption := ListBox1.Items[ListBox1.ItemIndex];
  86. end;
  87.  
  88.  
  89. procedure TForm1.ListBox1Click(Sender: TObject);
  90. begin
  91. Label1.Caption := ListBox1.Items[ListBox1.ItemIndex];
  92. Play;
  93. end;
  94.  
  95.  
  96. procedure TForm1.SpeedButton1Click(Sender: TObject);
  97. begin
  98.  
  99. begin
  100. Play;
  101.  
  102. end
  103. else
  104. begin
  105.  
  106. MediaPlayer1.Stop;
  107. Timer1.Enabled := False;
  108. end;
  109. end;
  110.  
  111.  
  112. procedure TForm1.Timer1Timer(Sender: TObject);
  113. begin
  114.  
  115. if sec < 59
  116. then Inc(sec)
  117. else
  118. begin
  119. sec := 0;
  120. Inc(min);
  121. end;
  122.  
  123.  
  124. Label2.Caption := IntToStr(min) + ':';
  125. if sec < 10 then
  126. Label2.Caption := Label2.Caption + '0' + IntToStr(sec)
  127. else
  128. Label2.Caption := Label2.Caption + IntToStr(sec);
  129.  
  130.  
  131. if MediaPlayer1.Position < MediaPlayer1.Length
  132. then Exit;
  133.  
  134.  
  135. Timer1.Enabled := False;
  136. MediaPlayer1.Stop;
  137.  
  138. if ListBox1.ItemIndex < ListBox1.Count - 1 then
  139. begin
  140. ListBox1.ItemIndex := ListBox1.ItemIndex + 1;
  141. Play;
  142. end;
  143.  
  144. if (ListBox1.ItemIndex = ListBox1.Count - 1) and CheckBox1.Checked = True then
  145. begin
  146. ListBox1.ItemIndex := 0;
  147. Play;
  148. end;
  149. end;
  150.  
  151. end.


Ответ отправил: Дима Гусаков (статус: 2-ой класс)
Время отправки: 3 марта 2007, 09:23
Оценка за ответ: 5


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

Всего сообщений: 1; последнее сообщение — 3 марта 2007, 01:08; участников в обсуждении: 1.
Роман

Роман (статус: 5-ый класс), 3 марта 2007, 01:08 [#1]:

P.S:а вот эта процедура будет последовательно ,по круга, воспроизводить файлы:
procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
with MediaPlayer1 do
if NotifyValue = nvSuccessful then
begin
button1click(sender);
end;
end;
В button1click - функция GetNextFileName(p).Теперь вам осталось только собрать всё до кучи...

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

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

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