Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при открытии файла 
:(
    Опции темы
Sayrus
  Дата 11.9.2004, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 11.9.2004

Репутация: нет
Всего: нет



Здрасти: подскажите плииз.......................................................................
Вобщем ошибка не при открытии медиа файла, а только если не один
файл не выбран, выскакивает вот такая ерунда-

Project Project1.exe raised exception class EMCIDeviceError with message 'Не удаетса отределитьтип
устройства по указанному расширению имени файла.'. Process Stopped. Use step or Run to continue.

Как устранть ошибку? Или отключить выскакивание этого сообщения..............





PM MAIL   Вверх
_hunter
Дата 11.9.2004, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



отключить выскакивание очень просто -- поставь ручную обработку исключений и отключи останов на дельфийских исключениях

а для устранения ошибки нужно код показать ;)


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Sayrus
Дата 12.9.2004, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 11.9.2004

Репутация: нет
Всего: нет



Цитата(_hunter @ 11.9.2004, 11:13)
отключить выскакивание очень просто -- поставь ручную обработку исключений и отключи останов на дельфийских исключениях

а для устранения ошибки нужно код показать ;)

А по проще если можно про отключение и установку ручной обработки.
Код OpenDialoga вот, вобщем програмка простенький медиа плеер........


//---------------------------------------------------------------------------
void __fastcall TForm1::N2Click(TObject *Sender)
{
if(OpenDialog1->Execute())
MediaPlayer1->FileName = OpenDialog1->FileName;
MediaPlayer1->Open();
StatusBar1->Panels->Items[0]->Text = OpenDialog1->FileName;
TrackBar1->Max = MediaPlayer1->Length;
}
//---------------------------------------------------------------------------


Заранее спасибо !..................
PM MAIL   Вверх
Атос
Дата 12.9.2004, 04:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 11.9.2004
Где: Екатеринбург

Репутация: нет
Всего: нет



Цитата(Sayrus @ 12.9.2004, 00:50)
А по проще если можно про отключение и установку ручной обработки.


1) Почему бы не заключить в скобки код открытия файла и/или проверять на наличие выбранного файла?
2) Как я понимаю _hunter, он имел в виду пару try-catch

итак, вариант:

Код

void __fastcall TForm1::N2Click(TObject *Sender)
{
   if (OpenDialog1->Execute() && FileExists(OpenDialog1->FileName))
   { // первый пункт
       try // второй пункт
       {
           MediaPlayer1->FileName = OpenDialog1->FileName;
           MediaPlayer1->Open();
           StatusBar1->Panels->Items[0]->Text = OpenDialog1->FileName;
           TrackBar1->Max = MediaPlayer1->Length;
       }
       catch (EMCIDeviceError E) // второй пункт - ловим конкретно EMCIDeviceError
       {
           // можно вывести ругательства юзверю... или вообще игнорировать все
       }
   } // первый пункт
}

PM MAIL ICQ   Вверх
Sayrus
Дата 13.9.2004, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 11.9.2004

Репутация: нет
Всего: нет



Цитата


1) Почему бы не заключить в скобки код открытия файла и/или проверять на наличие выбранного файла?
2) Как я понимаю _hunter, он имел в виду пару try-catch


Попробовал я,
На первый вариант ни какой реакции выдаёт туже ошибку.........
А вот второй при компиляции выдаёт:

[C++Error]Unit1.cpp(56): E2040 Declaration Terminated incorrectly

Чево я не так сделал?.....

PM MAIL   Вверх
srd
Дата 13.9.2004, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



Ты бы сказал, что у тебя в строке 56 smile.gif
Попробуй
Код

catch (EMCIDeviceError *E)

или
Код

catch (EMCIDeviceError &E)

Насколько я помню Билдер, там VCL классы только в динамической памяти могут размещаться. А тут копирование объекта-исключения делалось


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
Sayrus
Дата 14.9.2004, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 11.9.2004

Репутация: нет
Всего: нет



Цитата(srd @ 13.9.2004, 07:35)
Ты бы сказал, что у тебя в строке 56 smile.gif

Попробовал всё тоже самое не хочет компилить и всё....
Да Билдер пятый может в нём както подругому?.............. hmmm.gif
PM MAIL   Вверх
srd
Дата 14.9.2004, 02:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



Так какой код у тебя в 56-ой строке?


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
Конструктор
Дата 14.9.2004, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 12.5.2004
Где: Москва

Репутация: нет
Всего: 10



Попробуй без try-catch

Код

void __fastcall TForm1::N2Click(TObject *Sender)
{
   if (OpenDialog1->Execute())
   {
       MediaPlayer1->FileName = OpenDialog1->FileName;
       MediaPlayer1->Open();
       StatusBar1->Panels->Items[0]->Text = OpenDialog1->FileName;
       TrackBar1->Max = MediaPlayer1->Length;
  }
}


т.е. работать с файлом только если пользователь хоть что-то выбрал
PM MAIL WWW ICQ   Вверх
Sayrus
Дата 15.9.2004, 03:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 11.9.2004

Репутация: нет
Всего: нет



Цитата
Попробуй без try-catch

Вот спасибо навел на правильную мысль, всего одной строки не хватало..............


void __fastcall TForm1::N2Click(TObject *Sender)
{
if(OpenDialog1->Execute())
{
MediaPlayer1->FileName = OpenDialog1->FileName;
MediaPlayer1->DeviceType = dtAutoSelect;----------вот этого не хватало !!!!! exclamation.gif
MediaPlayer1->Open();
StatusBar1->Panels->Items[0]->Text = OpenDialog1->FileName;
TrackBar1->Max = MediaPlayer1->Length;

}
}


Теперь всё работает exclamation.gif СПАСИБО ВСЕМ ЗА ПОМОЩЬ........................ biggrin.gif
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.