|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
bass.dll Не могу понять в чем ошибка
Код, который не работает:
Код:
type TMyClass = class private FURL: string; FFile: TFileStream; procedure StatusProc(buffer: Pointer; len, user: DWORD); stdcall; public property URL: string read FURL write FURL; procedure Play; constructor Create(); destructor Destroy; override; end; constructor TMyClass.Create(); begin inherited; FURL := ''; if not BASS_Init(-1, 44100, 2, 0, nil) then raise Exception.Create('Не могу инициализировать звук') else BASS_Start; end; destructor TMyClass.Destroy; begin BASS_Free; inherited; end; procedure TMyClass.StatusProc(buffer: Pointer; len, user: DWORD); stdcall; begin if (buffer <> nil) and (len = 0) then FFile.Write(Buffer^, Len); end; procedure TMyClass.Play; var Stream: HSTREAM; begin FreeAndNil(FFile); FFile := TFileStream.Create('C:\temp.mp3', fmCreate); Stream := BASS_StreamCreateURL(PAnsiChar(FURL), 0, BASS_STREAM_STATUS, @TMyClass.StatusProc, nil); //Ошибка if BASS_ErrorGetCode = 0 then begin BASS_ChannelPlay(Stream, true); end; end; procedure TForm1.SpeedButton1Click(Sender: TObject); var My: TMyClass; begin My := TMyClass.Create; My.URL := 'http://cs4587.vkontakte.ru/u2026045/audio/62c024dfa750.mp3'; My.Play; end; Код который работает (без класса): Код:
var FS: TFileStream; .... procedure StatusProc(buffer: Pointer; len, user: DWORD); stdcall; begin if (buffer <> nil) and (len = 0) then FS.Write(Buffer^, Len); end; procedure TForm1.SpeedButton1Click(Sender: TObject); var Stream: HSTREAM; begin if not BASS_Init(-1, 44100, 2, 0, nil) then raise Exception.Create('Не могу инициализировать звук') else begin BASS_Start; FS := TFileStream.Create('C:\temp.mp3', fmCreate); Stream := BASS_StreamCreateURL('http://cs4587.vkontakte.ru/u2026045/audio/62c024dfa750.mp3', 0, BASS_STREAM_STATUS, @StatusProc, nil); if BASS_ErrorGetCode = 0 then begin BASS_ChannelPlay(Stream, true); end; end; end; И в чем ошибка? |