![]() |
|
#1
|
|||
|
|||
![]() Пожалуйста помогите обработать ошибку, создал небольшой радиоплеер на TBassSimple. Все работает отлично, но иногда когда плеер не может загрузить ссылку. Выскакивает ошибка: "Не удалось создать поток BASS_ERROR_HANDLE (5)". Иногда просто достает эта ошибка. Можно ее как нибудь обработать чтобы она не выскакивала, а например в Label1 писалось что то вроде "не могу загрузить ссылку." Весь инет облазил но так ничего не нашел. Может кто сможет помочь.
Исходник прилагаю. |
#2
|
||||
|
||||
![]() Цитата:
Пример: Код:
procedure TForm1.Button1Click(Sender: TObject); begin try bs.Play(url); except // В случае исключения ничего не делаем end; end; |
#3
|
|||
|
|||
![]() Пробовал уже try..except ноль эмоций, то есть ошибка все равно выскакивает. Может есть еще предложения.
|
#4
|
||||
|
||||
![]() Цитата:
|
#5
|
||||
|
||||
![]() И вот ещё что. Когда ты заключаешь в блок try..except, ты уверен что ошибку выдаёт именно приложение, а не отладчик Delphi? Попробуй запустить приложение не из под Delphi, а проводником.
|
#6
|
|||
|
|||
![]() Пробывал через проводник ошибка всеравно.
Вот файлы bass_simple.pas и bass.pas которые у меня. |
#7
|
||||
|
||||
![]() Цитата:
Чтобы в той версии которую ты выложил не появлялось никаких сообщений закоментируй MessageBox в модуле bass_simple здесь: Код:
procedure winmessage(h: HWND; text,caption: string; messtype: integer); begin MessageBox(h,PChar(text),PChar(caption),messtype); end; Код:
// запуск завершен if (stream = 0) then begin winmessage(Handle,b_mess_error[b_mess_lang,2]+BassErrorString,'Error BASS_StreamCreateFile'); busy:=false; exit; end; |
#8
|
|||
|
|||
![]() Спасибо, помогли. Скачал версию по старее и обработал через try..except.
только вот теперь не компилируется останавливается на строке: bs.OnTitleChange:=BassTitle; и пишет :Incompatible types: 'Parameter lists differ'. не могли бы еще помочь с этим. |
#9
|
|||
|
|||
![]() Смотри внимательно описание типа обработчика события OnTitleChange.
Сигнатуры этого типа и твоей процедуры BassTitle различаются (кол-во и/или тип параметров скорее всего). |
#10
|
||||
|
||||
![]() Чего же так париться? Зачем использовать сторонние классы? С библиотекой BASS очень легко работать
![]() |
#11
|
||||
|
||||
![]() Цитата:
Сейчас посмотрел более внимательно - действительно, эти два модуля bass_simple.pas от одного и того же разработчика, но твоя версия поновее моей. Из истории изменений: Цитата:
![]() |
#12
|
||||
|
||||
![]() Цитата:
1) тексты сообщений валяются в массиве Код:
b_mess_error : array[0..1,0..3] of string = ( ('Unknown file type'#13#10, // eng 0 'File is not exists'#13#10, 'Stream is not created'#13#10, 'Play the Stream Error'#13#10 ), ('Неизвестный формат файла'#13#10, // rus 1 'Файл не найден'#13#10, 'Не удалось создать поток'#13#10, 'Не удалось запустить воспроизведение'#13#10 ) ); 2) по коду ошибки в фукнции Код:
procedure TBassSimple.Load; // ... // запуск завершен if (stream = 0) then begin winmessage(Handle,b_mess_error[b_mess_lang,2]+BassErrorString,'Error BASS_StreamCreateFile'); busy:=false; exit; end; вот тут допишите свой обработчик типа Код:
if bassRadio and (BASS_ErrorGetCode = 5) then winmessage(Handle,'Не найдена радио станция','Ошибка'); насчет исключений да, не думал что может быть так, подумаю ... насчет кодов ошибок тоже. ![]() могу еще предложить в BassSimple ввести событие ошибки OnBassError : TBassErrorEvent = procedure (Sender: TObject; Text: string; Code: integer) of object; и если оно не назначено то будут выдаваться messagebox как раньше, а если назначено то вызываеться событие и там сам как хочешь обрабатывай и где такие радио станции нарыл что 90% не работают? Последний раз редактировалось alexpac26, 06.12.2012 в 07:55. |
#13
|
|||
|
|||
![]() Спасибо всем что откликнулись. Проблема решена. Насчет радиостанций там специально ошибки есть чтобы ошибку показать.
|
#14
|
||||
|
||||
![]() Цитата:
|