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

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

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

Delphi.int.ru Expert

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

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

#   

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


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

Подробнее »



Вопрос # 5 245

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Пытаюсь разобраться с библиотекой Bass.dll и написать не большой плеер
с основными функциями библиотеки уже разобрался но возникла проблема с плейлистом после некоторх усилий у меня всё же получилось заставить его проигрывать все записи по порядку вот только делает он это как то с тормозами и маласть притормаживает
в чём ошибка

Приложение:
  1. procedure TFormPlayer.Timer2Timer(Sender: TObject);
  2. begin
  3. {if slistbox.ItemIndex <0 then begin
  4. exit; end;
  5. if (BASS_ChannelIsActive(channel)<>BASS_ACTIVE_PLAYING) and
  6. (BASS_ChannelIsActive(channel)<>BASS_ACTIVE_PAUSEd) then
  7. slistbox.ItemIndex:= slistbox.ItemIndex+1;
  8.  
  9. if slistbox.ItemIndex =+1 then
  10. bass_channelstop(channel);
  11. channel:= slistbox.ItemIndex;
  12. channel:= bass_streamCreateFile(false, pChar(slistbox.Items[slistbox.ItemIndex]), 0, 0, 0);
  13. bass_channelplay(channel, false);}
  14. end;
  15.  


Barak Obama Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Barak Obama (статус: Посетитель)
Вопрос отправлен: 29 апреля 2011, 22:30
Состояние вопроса: открыт, ответов: 0.


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

Всего сообщений: 9; последнее сообщение — 6 мая 2011, 10:15; участников в обсуждении: 3.
min@y™

min@y™ (статус: Доктор наук), 29 апреля 2011, 22:41 [#1]:

Чойта мне кажется, что тело процедуры-обработчика OnTimer у тебя немного закомментарено. Это так было задумано или я чего-то не понимаю?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Barak Obama

Barak Obama (статус: Посетитель), 30 апреля 2011, 09:10 [#2]:

Закоментировал я его потом так кк решил переделать но путного ни чего не вышло код так то рабочий но хотелось бы улучшить убрать паузы между проигрованиями песен и тд
Александр Дубик

Александр Дубик (статус: 1-ый класс), 1 мая 2011, 00:52 [#3]:

Barak Obama: А значение Timer2.Interval у Вас случаем не 1000?
min@y™

min@y™ (статус: Доктор наук), 1 мая 2011, 10:59 [#4]:

Цитата (Александр Дубик):

А значение Timer2.Interval у Вас случаем не 1000?

Да не нужен там никакой таймер. Его вообще надо выкинуть.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Barak Obama

Barak Obama (статус: Посетитель), 1 мая 2011, 20:52 [#5]:

Александр Дубик: С таймером пробовал разные значения
min@y™

min@y™ (статус: Доктор наук), 1 мая 2011, 20:59 [#6]:

Хорош, перестань. Выкинь таймер к чортовойматери.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Barak Obama

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

Barak Obama (статус: Посетитель), 6 мая 2011, 10:15 [#9]:

Александр Дубик: Спасибо за ответ Но я уже нашёл решение этой проблеммы немного другим способом конечно но тоже всё работает если интересно как, то вот аська 599259455

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

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