|
Вопрос # 3 369/ вопрос открыт / |
|
Здравствуйте, эксперты!
Помогите пожалуйста. Я использую компонент ActiveX TWindowsMediaPlayer. При создании форми идет конект к базе на сервере мускул, от туда вытягиваются имена файлов и формируется файл wpl (плейлист). Как мне этот плейлист запихнуть в WindowsMediaPlayer. Тоесть, все это должно происходить при создании формы, и ище, чтоб этот плейлист проигрывался по колу. Зарание спасибо!
 |
Вопрос задал: mate (статус: Посетитель)
Вопрос отправлен: 5 ноября 2009, 15:15
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Ты с парсерами не работал, а я - с плеерами. Но всё же попробую. Тебе нужно просто извлечь список файлов, имена которых находятся после "
Я щас взял демо к компоненту TECXMLParser и скормил ему твой файл. 100% работает. Прицепляю парсер к ответу. Демо (XML Browser) посмотри в первую очередь. К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 5 ноября 2009, 16:20
Оценка за ответ: 3
|
Мини-форум вопроса
Всего сообщений: 71; последнее сообщение — 12 ноября 2009, 11:56; участников в обсуждении: 4.
Страницы: [« Предыдущая] [1] [2] [3] [4] [Следующая »]
|
mate (статус: Посетитель), 10 ноября 2009, 13:17 [#41]:
вот он мне не помог
|
|
mate (статус: Посетитель), 10 ноября 2009, 13:19 [#42]:
а как этот фокус убрать с ListBox?
|
|
min@y™ (статус: Доктор наук), 10 ноября 2009, 13:20 [#43]:
Цитата (Вадим К):
Тут и отладчик может не помочь. Думаю, что вся проблема в том, что в коде есть установка фокуса для ListBox (например при переходе на другой трек).
Дык для начала с помощью отладчика можно нужно локализовать ошибку - найти строку кода, на которой она вылетает.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
mate (статус: Посетитель), 10 ноября 2009, 13:34 [#44]:
отладчик не помогает, виснет когда приложение запускается....
|
|
min@y™ (статус: Доктор наук), 10 ноября 2009, 13:36 [#45]:
Цитата (mate):
отладчик не помогает, виснет когда приложение запускается....
Опиши детально свои действия, а то телепатов тут нет.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Вадим К (статус: Академик), 10 ноября 2009, 13:51 [#46]:
в данном случае можно не получить строчку кода. а получить адрес где то глубоко в внутренностях видны. Даже подымаясь по стеку вызовов никуда толком не придешь.
Плюс тут есть одна большая проблема - Windows media Player, разработчики которого панически бояться отладчиков Кто стыкался, знает
Фокус убирать не нужно. Всё проблема в том, что винда в некоторых случаях не очень любит, когда работают с невидимыми компонентами. Например установка фокуса в Memo1, когда оно невидимо под 2000 виндой к ошибке не приводит, а под XP - выкидывает.
Так вот и тут проблема. В нормальных приложениях список файлов хранили бы отдельно в массиве (списке), а ListBox сугубо для отображения. И когда он не виден, то и работать с им не нужно.
Попробуйте исключить работу ListBox в полноэкранном режиме, которая его модифицирует (например установку ItemIndex). Если заработает - будем разбираться, как переписать правильно приложение.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
mate (статус: Посетитель), 10 ноября 2009, 13:53 [#47]:
в свойствах медиаплеера устанавливаю Fulscreen=true, при создании формы происходит события ConectClick, это нажатие по кнопке, в следствии чего происходит конект к базе и результат запроса выводит в listbox....при этом же событии начинает проигрыватся первый файл с listbox.... потом отслеживаю MediaPlayerPlayStateChange, если заканчивает играть первый файл, то
if NewState = wmppsMediaEnded then begin
PostMessage(handle, wm_user, 0, 0);
if ListBox1.Items.IndexOf(PlayItem) = ListBox1.Items.Count-1 then
begin
Replay;
end
else
begin
mediaplayer.URL:=listbox1.Items[listbox1.Items.IndexOf(PlayItem)+1];
PlayItem:=listbox1.Items[listbox1.Items.IndexOf(PlayItem)+1];
edit1.Text:=PlayItem;
end;
end;
вот и все....
ошыбка вылетает, когда заканчивает играть первый файл
|
|
mate (статус: Посетитель), 10 ноября 2009, 14:04 [#48]:
не работает это.....я явно прописываю путь к первому файлу в URL, и также явно к другому, который должен проигрыватся по окончании первого.
|
|
mate (статус: Посетитель), 10 ноября 2009, 16:45 [#49]:
немного поковырявшись в коде понял, что ошыбку выдает при команде mediaplayer.fullScreen:=true......я ее закоментировал, теперь работет так: в свойстве mediaplayer стоит true, при запуске приложения, первый файл проигрывается в полноэкранном режиме, при его окончании, полноэкранный режим сворачивается, и второй файл начинает играть в обычном режиме......для этого я и писал команду mediaplayer.fullScreen:=true.....как быть в этой ситуации?
|
|
mate (статус: Посетитель), 11 ноября 2009, 14:08 [#50]:
Вадим К: можешь посоветовать в чем здесь засада?
|
|
Вадим К (статус: Академик), 11 ноября 2009, 14:25 [#51]:
Надо понять, почему он сворачивается.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
mate (статус: Посетитель), 11 ноября 2009, 14:27 [#52]:
может тебе кусок кода своего показать? может ты там увидишь что-от....
|
|
mate (статус: Посетитель), 11 ноября 2009, 14:35 [#53]:
ище один момент....я по клику по некой кнопке прописал fukkscreen:=true......так вот, когда первый файл проигрался в полноэкранном режиме, а потом плеер сворачивается и играет второй файл, то при нажатии на ту кнопку, плеер разворачивается.....ну и на следующий файл опьять сворачивается.....когда я прописываю fukkscreen:=true в месте, где отслаживается конец проигрывания файла и начало воспроизведения второго, о выдает ошыбку "Разрушительный сбой"
|
|
Вадим К (статус: Академик), 11 ноября 2009, 14:41 [#54]:
ключевая фраза "отслаживается конец". как можно развернуть плеер, если файл уже закончился? надо разворачивать, когда начинается воспроизведение нового файла.
P.S. проверьте грамматику
Галочка "подтверждения прочтения" - вселенское зло.
|
|
mate (статус: Посетитель), 11 ноября 2009, 14:54 [#55]:
procedure TForm1.MediaPlayerPlayStateChange(ASender: TObject;
NewState: Integer);
var i:integer;
begin
//if NewState = wmppsPlaying then Fullscreen;
if NewState = wmppsMediaEnded then begin
PostMessage(handle, wm_user, 0, 0);
if ListBox1.Items.IndexOf(PlayItem) = ListBox1.Items.Count-1 then
begin
Replay;
end
else
begin
mediaplayer.URL:=listbox1.Items[listbox1.Items.IndexOf(PlayItem)+1];
PlayItem:=listbox1.Items[listbox1.Items.IndexOf (PlayItem)+1];
edit1.Text:=PlayItem;
end;
end;
end;
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if Msg.Message = WM_USER then
begin
mediaplayer.controls.play();
Fullscreen;
end;
end;
procedure TForm1.Fullscreen;
begin
mediaplayer.fullScreen:=true;
end;
когда вот так я делаю - то ошыбка "Разрушительный сбой", а если не вызиваю функцию Fullscreen, то все норм.
|
|
Вадим К (статус: Академик), 11 ноября 2009, 15:14 [#56]:
ну логично, получается, что перевод в полноэкранный режим происходит дважды.
P.S. ж ч ш пишем с "и".
Галочка "подтверждения прочтения" - вселенское зло.
|
|
mate (статус: Посетитель), 11 ноября 2009, 15:25 [#57]:
сори, я сам со Львова и русский язик знаю только разговорный..... не понял, где первый раз переход. а где второй?
|
|
Вадим К (статус: Академик), 11 ноября 2009, 15:32 [#58]:
первый
mediaplayer.controls.play();
эта строка вызывает событие wmppsPlaying
где снова вызывается фуллскрин.
P.S. Я тоже не с Россиии, могу и на украинском говорить, и на русском.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
mate (статус: Посетитель), 11 ноября 2009, 15:42 [#59]:
ну хорошо, если без вызова функции Fullscreen, то работает без ошибки.......как я понял, если в свойстве медиаплеера задать fullscreen=true, то при вызове mediaplayer.controls.play()- плеер должен играть в полноэкранном режиме....но почему тогда после окончания проигрывания первого файла он сворачивается?
|
|
Вадим К (статус: Академик), 11 ноября 2009, 15:49 [#60]:
Он сворачивается, потому что закончил проигрывание. всего лишь.
Но если был бы список, то скорее всего он бы не сворачивался.
Галочка "подтверждения прочтения" - вселенское зло.
|
Страницы: [« Предыдущая] [1] [2] [3] [4] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|