Форум: "Начинающим";
Текущий архив: 2012.01.15;
Скачать: [xml.tar.bz2];
ВнизTMediaplayer Найти похожие ветки
← →
Eeuwige Rouw (2011-10-05 04:58) [0]Доброго времени суток! Мастера, тут такое дело...
Моя дама полный "чайник" в компе, даже ярлык на рабочем столе создать не может...
Написал ей аудиоплеер, и столкнулся с проблемой, а именно: одни мп3 файлы он вопроизводит а другие нет...
из-за ошибки начинают появляться бесконечно сообщения "No MCI Device open"...
проблема в том, что у меня не получается перехватить это сообщение,
тоесть, в блок try ... except помещено сообщение, что файл не поддерживается, а также функция выхода из процедуры загрузки Exit,
сообщение показывается, но те сообщения все равно вылазят, процесс убивается только через диспетчер задач...
подскажите как перехватить это, чтобы не вылезали эти сообщения, а просто, сразу выход из процедуры?
( Юмор, колкости, принимаются, но помощь очень нужна! )
Всех благодарю за ответы!
Вот это перехватить надо (подробнее): http://content.foto.mail.ru/mail/ghostdelvonte/32/s-160.png
← →
Омлет © (2011-10-05 08:34) [1]Код покажи.
← →
Ega23 © (2011-10-05 08:57) [2]
> , а просто, сразу выход из процедуры?try
;
процедура
except
end
Но так делать не стоит, пустой except нужен бывает крайне редко.
← →
И. Павел © (2011-10-05 09:10) [3]
> сообщение показывается, но те сообщения все равно вылазят
Попробуйте трассировать код - идите по строкам чтобы понять, куда программа уходит после exit.
В самом крайнем случае (например, если окажется, что исключения приходят из дополнительного потока в главный), то можно написать глобальный обработчик исключений application.onexception, и перехватывать ошибки там.
Хотя, скорее всего, где-то у вас выполняется что-то по таймеру.
> Моя дама полный "чайник" в компе
Так и не понял, при чем тут дама, если программу написали вы :)
← →
Ega23 © (2011-10-05 09:20) [4]
> Так и не понял, при чем тут дама, если программу написали вы :)
Чё-ж тут непонятного-то?
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
← →
RWolf © (2011-10-05 09:37) [5]bass.dll.
← →
Eeuwige Rouw (2011-10-05 09:52) [6]
> Так и не понял, при чем тут дама, если программу написали
> вы :)
Хотел сделать ей сюрприз и облегчить ее нелегкую компьютерную жизнь, а в итоге напугал бедную, она подумала что я ей вирус подкинул, диспетчером то она не умеет пользоваться :)
> Код покажи.with Mp1 do
begin
try
FileName := "....";
Open;
Play;
Except
begin
ShowMessage("Формат не поддерживается!");
Exit;
end;
end;
вот такой...
← →
Омлет © (2011-10-05 10:14) [7]А если так?
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 10:35) [8]
> А если так?
Нет, все-равно также...
само то сообщение появляется, но потом остальные, до бесконечности "No mci device open"...
← →
Омлет © (2011-10-05 10:50) [9]Значит, ты не весь код показал.
В дебаге после ShowMessage куда уходит?
← →
sniknik © (2011-10-05 10:51) [10]> Хотел сделать ей сюрприз и облегчить ее нелегкую компьютерную жизнь
поставь ей нормальный плейер типа "медиа плейер классик" например.
> написать глобальный обработчик исключений application.onexception, и перехватывать ошибки там.
вот, плюс чтобы не было "бесконечности" при первой данной (да и других того же класса) ошибке плейер нужно отключать.
← →
sniknik © (2011-10-05 10:54) [11]> Значит, ты не весь код показал.
Play; это "включатель" как понимаю, не более. ожидание конца проигрывания тут нет, оно идет в другом потоке (? х.з. као оно там устроено. но по идее).
← →
QAZ (2011-10-05 10:55) [12]TMediaplayer не предназначен для mp3 в принципе, изначально,и всякие анальные способы описаные на форумах ничего не изменят
← →
pushok (2011-10-05 11:59) [13]
> Нет, все-равно также...само то сообщение появляется, но
> потом остальные, до бесконечности "No mci device open"..
> .
Ну тогда после сообшения поставьbreak
...
← →
ProgRAMmer Dimonych © (2011-10-05 12:04) [14]Предложу свою версию. По молодости, когда использовал TMediaPlayer, наблюдал за ним проблему при открытии файлов, пути к которым слишком длинные и/или содержат не-латинские буквы. Если тот же файл (кстати, MP3) копировал куда-нибудь поближе к корню диска, открывался на ура.
← →
pushok (2011-10-05 12:11) [15]
> ProgRAMmer Dimonych © (05.10.11 12:04) [14]
В таком случаи обычно пути в ковычках пишут чтоб пробелы не воспринимал как разделители
← →
ProgRAMmer Dimonych © (2011-10-05 12:48) [16]> [15] pushok (05.10.11 12:11)
Так вот как раз пробелов-то в путях и не было, а проблема была.
← →
Eeuwige Rouw (2011-10-05 13:31) [17]Вообщем, решил проблему!
Спасибо всем за то, что откликнулись!
Как решил:
Создал процедуру ( обработчик исключения )...
в создании формы указал на нее Application.OnException := AppException;
Как уже было сказано здесь, причиной бесконечности появления сообщений являлся таймер, он теперь отключается в процедуре-обработчике, а также закрывается сам плеер ( Mp1.Close )...
Вопрос закрыт! Примите мою благодарность!
← →
QAZ (2011-10-05 15:26) [18]т.е. он как не играл некоторые файлы так и не играет,зато теперь молчит в тряпочку?
круто
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.01.15;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.003 c