|
#1
|
|||
|
|||
Ошибка с bass.dll
Если убрать @StatusProc и поставить nil, то все воспроизводится, но если оставить - вылазит Access violation. Что я делаю не так?
Код:
var stream: HSTREAM; procedure StatusProc(buffer: pointer; length: cardinal; user: pointer); begin // end; procedure TForm1.play; var i: integer; f:PChar; begin f := 'http://blabla.mp3'; stream := BASS_StreamCreateURL(f, 0, BASS_STREAM_STATUS, @StatusProc, 0); BASS_ChannelPlay(stream, true); end; |
#2
|
||||
|
||||
в если в конце объявления функции поставить stdcall
и еще 2 последних параметра имеют тип DWORD Последний раз редактировалось Pilot_Red, 09.10.2011 в 14:16. |
#3
|
|||
|
|||
Спасибо. И если можно еще вопрос:
Получаю размер с помощью ProgressBar1.Max := BASS_ChannelGetLength(stream, BASS_POS_BYTE); И в потом, в таймере BASS_ChannelGetPosition(stream, BASS_POS_BYTE); все время возвращает ноль. Как узнать текущую позицию в треке? Если что то делать с буфером внутри StatusProc программа виснет и все. |
#4
|
||||
|
||||
ART, излазил все! инет говорит что все должно работать
Потом решил у себя проверить. И каково было мое удивление, когда я увидел быстро меняющуюся метку, отображающую позицию трека! Т.е. у меня арбайтен! Проверял на первом попавшимся треке http://music.karelia.pro/?path=Unsorted%2F_DJ%20MIX%20%26%20Electronic%20Mu sic%2FDJ%20Antony%20-%20100%25%2F01%20Martin%20Solveig%20-%20Rocking%20Music%20%28Joey%20Negro%20Dub%20Mix%2 9.mp3 |
#5
|
||||
|
||||
Код:
var TimeAll, TimeCur : DWORD; Len : QWORD; ... Len := BASS_ChannelGetPosition(Channel, BASS_POS_BYTE); TimeCur := Trunc(BASS_ChannelBytes2Seconds(Channel, Len)); TimeAll := Trunc(BASS_ChannelBytes2Seconds(Channel, BASS_ChannelGetLength(Channel, BASS_POS_BYTE))); TimeAll - Вся длина Два архива с NetRadio (Delphi, ASM), когда-то переделывал из С для Ian Luck-а. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 10.10.2011 в 02:40. |