| 
| 
 | Вопрос # 5 245/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!Пытаюсь разобраться с библиотекой Bass.dll и написать не большой плеер
 с основными функциями библиотеки уже разобрался  но возникла проблема с плейлистом после некоторх усилий у меня всё же получилось заставить его проигрывать все записи по порядку вот только делает он это как то с тормозами и маласть притормаживает
 в чём ошибка
 Приложение:Переключить в обычный режим procedure TFormPlayer.Timer2Timer(Sender: TObject);begin{if slistbox.ItemIndex <0 then  beginexit;   end;if (BASS_ChannelIsActive(channel)<>BASS_ACTIVE_PLAYING) and  (BASS_ChannelIsActive(channel)<>BASS_ACTIVE_PAUSEd) thenslistbox.ItemIndex:= slistbox.ItemIndex+1; if slistbox.ItemIndex =+1 thenbass_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 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |