Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ No Mci Device Open

Автор: Артемий2 13.10.2006 22:35

Корче, у медиаплеера есть такая штука EMCIDeviceError. При ошибке файла она выдает сообщение "No MCI device open". Она должна выдать одно сообщение, НО.. у меня выдает их дофига, может хоть 1000 , если я не остановлю этот фигов процесс. Дам код:

Код
if OpenDialog1.Execute then
    with MediaPlayer1 do
    begin
      Filename := OpenDialog1.filename;
      Notify := True;
      try
   Open;
  except
    on EMCIDeviceError do
      begin
        ShowMessage('Ошибка обращения к файлу ');

Автор: volvo 13.10.2006 22:41

Ну, так а самое интересное ты не показал... Что ты делаешь ПОСЛЕ показа сообщения? Полностью весь Begin ... End приведи...

Автор: Артемий2 13.10.2006 22:44

Пробовал так:

Код
MediaPlayer1.Close;
         MediaPlayer1.Refresh;

Автор: volvo 13.10.2006 22:48

Я тебя попросил НЕ кусочки, непонятно откуда выдранные, а ПОЛНОСТЬЮ блок Begin End для обработчика исключения. Ты вопрос задаешь, значит это - в твоих интересах. Не хочешь говорить, как делал - иди на форум телепатов.

Автор: Гость 13.10.2006 23:06

if OpenDialog1.Execute then
with MediaPlayer1 do
begin
Filename := OpenDialog1.filename;
Notify := True;
try
Open;
except
on EMCIDeviceError do
begin
ShowMessage('Ошибка обращения к файлу ');
MediaPlayer1.Close;
MediaPlayer1.Refresh;
end;

Автор: Артемий2 20.10.2006 23:50

Прости за задержку, вот полный Begin..End . Очень прошу помочь!

if OpenDialog1.Execute then
with MediaPlayer1 do
begin
Filename := OpenDialog1.filename;
Notify := True;
try
Open;
except
on EMCIDeviceError do
begin
ShowMessage('Ошибка обращения к файлу ');
MediaPlayer1.Close;
MediaPlayer1.Refresh;
end;
wacko.gif

Автор: мисс_граффити 21.10.2006 16:18

А что получается, если убрать Refresh?

Автор: Артемий2 21.10.2006 22:44

Тоже самое!

Автор: Zevs5 21.10.2006 22:49

А такой вопрос: Для чего использовать "EMCIDeviceError" если ты всё равно выводишь своё сообщение об ошибке и закрываешь проигрыватель.

Автор: Артемий2 21.10.2006 22:58

Короче слушайте, вот этот плеер что я пишу, уже довольно сложный по своему устройству, соответственно внутренний код тоже не маленький. Собирал как-бы по кусочкам. Кто-то дал одно, кто-то другое, и теперь это всё в одной куче. Тогда я попробовал написать самый простой какой только можно придумать плеер. И ТАМ ВСЁ НОРМАЛЬНО! Скорее все что-то ещё нужно править в коде, не только этот кусок!

Цитата
Для чего использовать "EMCIDeviceError"

Ну как-бы там все-таки на АнгЛицком, а я хотел на РусскоМ.
(или что ты имеешь в виду?)

Автор: Zevs5 22.10.2006 1:08

Я в смысле того что ты уже сообщение на русском ниже вывел через ShowMessage(), но мне кажется что тот код который ты указал запускается бесконечным циклом генерации сообщений.

Твоя связка try...except циклически опрашивает истинность, а выход ты из неё не сделал.

Хотя я скорее всего ошибаюсь так как с делфи всего недели три.

Автор: мисс_граффити 22.10.2006 3:26

ей выход не нужен. она сама удаляет объект исключительной ситуации, когда отработает...

1. попробуй убрать строку

on EMCIDeviceError do

то есть просто
try
...
except
...
там вариантов ошибки не много, можно попробовать не проверять.

2. при запуске непосредственно из среды и из уже скомпилированного файла ведет себя одинаково?
3. найди в Делфи такой пункт меню (где именно он находится - не знаю, он в разных версиях по-разному засунут): Stop on Delphi exception и посмотри, нет ли там галочки
4. в каком обработчике события вся эта радость происходит?
5. ...проще всего - скинь полностью проект. интересно посмотреть и попробовать найти глюк.

Автор: Артемий2 23.10.2006 0:00

Всё это происходит в OnClick кнопки "Открыть медиафайл"!
Не нашел я этот "Stop on Delphi"! У меня Delphi 7 и TurboDelphi.NET , но сейчас я на семерке.
Если не возражаешь я скину проект чуть позже.
Пробовал твой совет

Цитата
1. попробуй убрать строку
on EMCIDeviceError do

Автор: мисс_граффити 23.10.2006 4:26

у меня 6.
во вторник в универе посмотрю, где это в 7.

Автор: Артемий2 24.10.2006 23:26

Слушай, я точно знаю что проблема не сдесь! Ведь когда я писал новый плеер ,этого не было! Скорее всего что-то в самом коде не то! Ща сяду, буду смотреть код. Спасибо за советы. Если сам не справлюсь, то кину тебе проект! rolleyes.gif