Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2008, 04:40   #1
rmlib0
 
Регистрация: 05.07.2008
Сообщений: 3
По умолчанию помощь в программе

Здравствуйте, пишу программу -- будильник, ли рядом.
Там используется компонент TMediaPlayer, который должен играть музыку по окончанию времени. Беру файлы *.m3u достаю из них пути к песням, и далее заношу в TStringList. После закидываю файл в проигрыватель и он играет, но только одна песня, далее через условия прошу его играть следующую, но он брыкается и говорит, что не хочет...
Точнее, он ничего не говорит, вот с этой проблемой и прошу помочь разобраться.
Места в программе, в которых нужно махать напильником отмеченны
Код:
//@TO_DEBUG
Сами файлы прикрепил
Заранее спасибо.
Вложения
Тип файла: zip sap-0.1b.zip (88.2 Кб, 23 просмотров)
rmlib0 вне форума Ответить с цитированием
Старый 05.07.2008, 10:21   #2
AXS
Программер
Пользователь Подтвердите свой е-майл
 
Аватар для AXS
 
Регистрация: 03.07.2008
Сообщений: 36
По умолчанию

Ты слишком всё усложняешь... Я бы просто отловил когда проигрыватель закончит играть трек и запустил следующий.
Код:
procedure frmMain.FormCreate(Sender: TObject);
 begin
   MediaPlayer1.Notify   := True;
   MediaPlayer1.OnNotify := NotifyProc;
 end;

 procedure frmMain.NotifyProc(Sender: TObject);
 begin
   with (Sender as TMediaPlayer) do
    begin
     case Mode of
       mpStopped: {Здесь запускаешь следующий трек};
       
     end;
    Notify := True; // Кстати это ключевая строчка твоей проблемы
   end;
 end;
PS: Этот цикл надо прерывать:
Вместо
Код:
for i:=7 to Length(s) do
  if s[i]=',' then
    begin
      readln(f,s);
      FILE_PATH.Add(s);
    end;
пиши
Код:
for i:=7 to Length(s) do
  if s[i]=',' then
    begin
      readln(f,s);
      FILE_PATH.Add(s);
      Break;  // Вот...
    end;
<AXS> Если один из двух выходов - ловушка, надо найти третий... </AXS>
<AXS> "Живой" - явление временное... </AXS>

<><><> www.mak-ms.com <><><>

Последний раз редактировалось AXS; 05.07.2008 в 10:26.
AXS вне форума Ответить с цитированием
Старый 05.07.2008, 15:35   #3
rmlib0
 
Регистрация: 05.07.2008
Сообщений: 3
По умолчанию

Спасибо за отзыв, но у меня ругается на то, что не знает такого, как NotifyProc, если в свою процедуру вставлять, то кидается на Sender.
Потому немного головы не приложу (ли выступающих частей, что делать).
Если фурычить и изменять в некоторых местах, то он вылетать начинает с ошибкой Index List Bound, т.е. не следующую строку берет из TStringList, а пробегает по всем, пока не закончится все

Может, кто еще, чем поможет
(или определит хотя бы, как правильно использовать пример "свыше")
rmlib0 вне форума Ответить с цитированием
Старый 05.07.2008, 16:06   #4
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Достаточно сложный будильник и писали его явно не Вы
Ктомуже ИМХО запутанно написан.

Будет полезней если Вы его напишите с нуля... Тогда не будет вопросо зачем это написанно и что оно делает, а пользы будет горазда больше....

Одна только отладка и исправление ошибок чего стоит А это бесценый опыт
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 05.07.2008, 18:36   #5
AXS
Программер
Пользователь Подтвердите свой е-майл
 
Аватар для AXS
 
Регистрация: 03.07.2008
Сообщений: 36
По умолчанию

Если проблема только в этом, то попробую помочь, но если этим дело не закончится - бросай это дело нафиг.
В общем там где утебя объявлены функции и процедуры -
private
. . .
public
. . .
и так далее, после слова public напиши
Код:
procedure NotifyProc(Sender: TObject);
и нажми Ctrl+Shift+C У тебя создастся заготовка процедуры
Код:
procedure frmMain.NotifyProc(Sender: TObject);   
 begin  
  
 end;
Доведи процедуру до того состояния, которое я тебе описывал выше и вперёд...
<AXS> Если один из двух выходов - ловушка, надо найти третий... </AXS>
<AXS> "Живой" - явление временное... </AXS>

<><><> www.mak-ms.com <><><>
AXS вне форума Ответить с цитированием
Старый 05.07.2008, 21:29   #6
rmlib0
 
Регистрация: 05.07.2008
Сообщений: 3
По умолчанию

Цитата:
Достаточно сложный будильник и писали его явно не Вы
Позвольте не согласиться Все же писал я ...
Цитата:
Ктомуже ИМХО запутанно написан.
Вот, наверно, из-за этого и запутанный
Некоторые функции брал из нета, т.к. знание API MustDie'я у меня на глубоком нуле.

Вообще программа писалась для того, чтобы разбудить на один из экзаменов, но она не понадобилась, т.к. все же не пришлось ложиться

За все советы спасибо, поковыряю, если все же не получится, то, наверно, забью. Хоть и жаль, что такой функции не будет
rmlib0 вне форума Ответить с цитированием
Старый 06.07.2008, 10:39   #7
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

писал давно плеер. просто выбираем директорию, он отображает все mp3 файлы этой директории. Жмём на любой из них, он его проигрывает, а потом автоматически проигрывает следующий и т.д. Надеюсь поможет.

Сразу говорю, при воспроизведении последнего файла - ошибка. Я помню, что её устранял, видимо это не последняя версия

P.S.: Писал лет 5-6 назад, поэтому уровень наинизший.
Вложения
Тип файла: rar player.rar (2.8 Кб, 14 просмотров)

Последний раз редактировалось zetrix; 06.07.2008 в 10:47.
zetrix вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Архивация в программе FaTaL Общие вопросы Delphi 13 04.03.2008 19:37
Индексация в программе Nikolaeva БД в Delphi 1 04.03.2008 15:09
Путь к программе eds Общие вопросы .NET 3 29.12.2007 20:28
Файлы в программе. Kukkk Общие вопросы Delphi 3 25.12.2007 21:09
Звук в программе - воспроизведение wma и ogg LeoN Мультимедиа в Delphi 4 14.06.2007 17:48