|
Вопрос # 5 245/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Пытаюсь разобраться с библиотекой Bass.dll и написать не большой плеер
с основными функциями библиотеки уже разобрался но возникла проблема с плейлистом после некоторх усилий у меня всё же получилось заставить его проигрывать все записи по порядку вот только делает он это как то с тормозами и маласть притормаживает
в чём ошибка
Приложение: Переключить в обычный режим- procedure TFormPlayer.Timer2Timer(Sender: TObject);
- begin
- {if slistbox.ItemIndex <0 then begin
- exit; end;
- if (BASS_ChannelIsActive(channel)<>BASS_ACTIVE_PLAYING) and
- (BASS_ChannelIsActive(channel)<>BASS_ACTIVE_PAUSEd) then
- slistbox.ItemIndex:= slistbox.ItemIndex+1;
-
- if slistbox.ItemIndex =+1 then
- bass_channelstop(channel);
- channel:= slistbox.ItemIndex;
- channel:= bass_streamCreateFile(false, pChar(slistbox.Items[slistbox.ItemIndex]), 0, 0, 0);
- bass_channelplay(channel, false);}
- end;
-
 |
Вопрос задал: Barak Obama (статус: Посетитель)
Вопрос отправлен: 29 апреля 2011, 22:30
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 9; последнее сообщение — 6 мая 2011, 10:15; участников в обсуждении: 3.
|
min@y™ (статус: Доктор наук), 29 апреля 2011, 22:41 [#1]:
Чойта мне кажется, что тело процедуры-обработчика OnTimer у тебя немного закомментарено. Это так было задумано или я чего-то не понимаю?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Barak Obama (статус: Посетитель), 30 апреля 2011, 09:10 [#2]:
Закоментировал я его потом так кк решил переделать но путного ни чего не вышло код так то рабочий но хотелось бы улучшить убрать паузы между проигрованиями песен и тд
|
|
min@y™ (статус: Доктор наук), 1 мая 2011, 10:59 [#4]:
Цитата (Александр Дубик):
А значение Timer2.Interval у Вас случаем не 1000?
Да не нужен там никакой таймер. Его вообще надо выкинуть.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 1 мая 2011, 20:59 [#6]:
Хорош, перестань. Выкинь таймер к чортовойматери.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Barak Obama (статус: Посетитель), 1 мая 2011, 21:18 [#7]:
min@y™: Да я бы с радостью его выкинул вот только без него у меня вообще ни чего не выходит
|
|
Александр Дубик (статус: 1-ый класс), 5 мая 2011, 23:45 [#8]:
Попробуте вынести приведённый Вами код в процедуру, вызываемую по окончанию воспроизведения дорожки.
var
Channel: HSTREAM;
procedure MySyncProc(Handle: HSYNC; Channel, Data: DWORD; User: Pointer); stdcall;
begin
if (sListBox.ItemIndex) <0 or (sListBox.ItemIndex = sListBox.Items.Count - 1) then Exit;
sListBox.ItemIndex:= sListBox.ItemIndex + 1;
if sListBox.ItemIndex =+1 then BASS_ChannelStop(Channel);
Channel:= sListBox.ItemIndex;
Channel:= BASS_StreamCreateFile(False, PChar(sListBox.Items[sListBox.ItemIndex]), 0, 0, 0 {$IFDEF UNICODE} or
BASS_UNICODE {$ENDIF});
{ Укажем библиотеке BASS, что необходимо по событию завершения воспроизведения
единожды (BASS_SYNC_ONETIME) вызвать процедуру
MySyncProc}
BASS_ChannelSetSync(Channel, BASS_SYNC_ONETIME or BASS_SYNC_END, 0, MySyncProc, nil);
//BASS_ChannelPlay(Channel, False);
{ Хочу обратить внимание, что функция BASS_ChannelPlay внутри данной процедуры вызываться не желает,
поэтому вызовем её из внешней процедуры:}
frmMain.btnPlayPause.Click;
end;
Подробности в файле справки http://us2.un4seen.com/files/bass24.zip
|
|
Barak Obama (статус: Посетитель), 6 мая 2011, 10:15 [#9]:
Александр Дубик: Спасибо за ответ Но я уже нашёл решение этой проблеммы немного другим способом конечно но тоже всё работает если интересно как, то вот аська 599259455
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|