![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TMediaplayer [D7]
Eeuwige Rouw © (2011-10-05 04:58:00)Доброго времени суток! Мастера, тут такое дело...
Моя дама полный "чайник" в компе, даже ярлык на рабочем столе создать не может...
Написал ей аудиоплеер, и столкнулся с проблемой, а именно: одни мп3 файлы он вопроизводит а другие нет...
из-за ошибки начинают появляться бесконечно сообщения "No MCI Device open"...
проблема в том, что у меня не получается перехватить это сообщение,
тоесть, в блок try ... except помещено сообщение, что файл не поддерживается, а также функция выхода из процедуры загрузки Exit,
сообщение показывается, но те сообщения все равно вылазят, процесс убивается только через диспетчер задач...
подскажите как перехватить это, чтобы не вылезали эти сообщения, а просто, сразу выход из процедуры?
( Юмор, колкости, принимаются, но помощь очень нужна! )
Всех благодарю за ответы!
Вот это перехватить надо (подробнее): http://content.foto.mail.ru/mail/ghostdelvonte/32/s-160.png
QAZ (2011-10-05 15:26:00) [1]т.е. он как не играл некоторые файлы так и не играет,зато теперь молчит в тряпочку?
круто
Eeuwige Rouw (2011-10-05 13:31:00) [2]Вообщем, решил проблему!
Спасибо всем за то, что откликнулись!
Как решил:
Создал процедуру ( обработчик исключения )...
в создании формы указал на нее Application.OnException := AppException;
Как уже было сказано здесь, причиной бесконечности появления сообщений являлся таймер, он теперь отключается в процедуре-обработчике, а также закрывается сам плеер ( Mp1.Close )...
Вопрос закрыт! Примите мою благодарность!
ProgRAMmer Dimonych (2011-10-05 12:48:00) [3]> [15] pushok (05.10.11 12:11)
Так вот как раз пробелов-то в путях и не было, а проблема была.
pushok (2011-10-05 12:11:00) [4]
> ProgRAMmer Dimonych © (05.10.11 12:04) [14]
В таком случаи обычно пути в ковычках пишут чтоб пробелы не воспринимал как разделители
ProgRAMmer Dimonych (2011-10-05 12:04:00) [5]Предложу свою версию. По молодости, когда использовал TMediaPlayer, наблюдал за ним проблему при открытии файлов, пути к которым слишком длинные и/или содержат не-латинские буквы. Если тот же файл (кстати, MP3) копировал куда-нибудь поближе к корню диска, открывался на ура.
pushok (2011-10-05 11:59:00) [6]
> Нет, все-равно также...само то сообщение появляется, но
> потом остальные, до бесконечности "No mci device open"..
> .
Ну тогда после сообшения поставьbreak...
QAZ (2011-10-05 10:55:00) [7]TMediaplayer не предназначен для mp3 в принципе, изначально,и всякие анальные способы описаные на форумах ничего не изменят
sniknik (2011-10-05 10:54:00) [8]> Значит, ты не весь код показал.
Play; это "включатель" как понимаю, не более. ожидание конца проигрывания тут нет, оно идет в другом потоке (? х.з. као оно там устроено. но по идее).
sniknik (2011-10-05 10:51:00) [9]> Хотел сделать ей сюрприз и облегчить ее нелегкую компьютерную жизнь
поставь ей нормальный плейер типа "медиа плейер классик" например.
> написать глобальный обработчик исключений application.onexception, и перехватывать ошибки там.
вот, плюс чтобы не было "бесконечности" при первой данной (да и других того же класса) ошибке плейер нужно отключать.
Омлет (2011-10-05 10:50:00) [10]Значит, ты не весь код показал.
В дебаге после ShowMessage куда уходит?
Eeuwige Rouw (2011-10-05 10:35:00) [11]
> А если так?
Нет, все-равно также...
само то сообщение появляется, но потом остальные, до бесконечности "No mci device open"...
Омлет (2011-10-05 10:14:00) [12]А если так?
with Mp1 do
begin
Close;
try
FileName := '......';
Open;
except
on E: Exception do
ShowMessage('Формат не поддерживается!' + sLineBreak + E.Message);
end;
try
Play;
except
on E: Exception do
ShowMessage('Ошибка воспроизведения!' + sLineBreak + E.Message);
end;
end;
Eeuwige Rouw (2011-10-05 09:52:00) [13]
> Так и не понял, при чем тут дама, если программу написали
> вы :)
Хотел сделать ей сюрприз и облегчить ее нелегкую компьютерную жизнь, а в итоге напугал бедную, она подумала что я ей вирус подкинул, диспетчером то она не умеет пользоваться :)
> Код покажи.
with Mp1 do
begin
try
FileName := '....';
Open;
Play;
Except
begin
ShowMessage('Формат не поддерживается!');
Exit;
end;
end;
вот такой...
RWolf (2011-10-05 09:37:00) [14]bass.dll.
Ega23 (2011-10-05 09:20:00) [15]
> Так и не понял, при чем тут дама, если программу написали вы :)
Чё-ж тут непонятного-то?
http://lurkmore.ru/%D0%A3_%D0%BC%D0%BE%D0%B5%D0%B9_%D0%BF%D0%BE%D0%B4%D1%80%D1%83%D0%B3%D0%B8_%D1%81_%D0%B5%D1%91_%D0%BF%D0%B0%D1%80%D0%BD%D0%B5%D0%BC
И. Павел (2011-10-05 09:10:00) [16]
> сообщение показывается, но те сообщения все равно вылазят
Попробуйте трассировать код - идите по строкам чтобы понять, куда программа уходит после exit.
В самом крайнем случае (например, если окажется, что исключения приходят из дополнительного потока в главный), то можно написать глобальный обработчик исключений application.onexception, и перехватывать ошибки там.
Хотя, скорее всего, где-то у вас выполняется что-то по таймеру.
> Моя дама полный "чайник" в компе
Так и не понял, при чем тут дама, если программу написали вы :)
Ega23 (2011-10-05 08:57:00) [17]
> , а просто, сразу выход из процедуры?
try;
процедура
except
end
Но так делать не стоит, пустой except нужен бывает крайне редко.
Омлет (2011-10-05 08:34:00) [18]Код покажи.