| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Ошибка при открытии файла |
| Автор: Sayrus 11.9.2004, 01:39 |
| Здрасти: подскажите плииз....................................................................... Вобщем ошибка не при открытии медиа файла, а только если не один файл не выбран, выскакивает вот такая ерунда- Project Project1.exe raised exception class EMCIDeviceError with message 'Не удаетса отределитьтип устройства по указанному расширению имени файла.'. Process Stopped. Use step or Run to continue. Как устранть ошибку? Или отключить выскакивание этого сообщения.............. |
| Автор: _hunter 11.9.2004, 11:13 |
| отключить выскакивание очень просто -- поставь ручную обработку исключений и отключи останов на дельфийских исключениях а для устранения ошибки нужно код показать ;) |
| Автор: Sayrus 12.9.2004, 00:50 | ||
А по проще если можно про отключение и установку ручной обработки. Код 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; } //--------------------------------------------------------------------------- Заранее спасибо !.................. |
| Автор: Атос 12.9.2004, 04:52 | ||||
1) Почему бы не заключить в скобки код открытия файла и/или проверять на наличие выбранного файла? 2) Как я понимаю _hunter, он имел в виду пару try-catch итак, вариант:
|
| Автор: Sayrus 13.9.2004, 01:20 | ||
Попробовал я, На первый вариант ни какой реакции выдаёт туже ошибку......... А вот второй при компиляции выдаёт: [C++Error]Unit1.cpp(56): E2040 Declaration Terminated incorrectly Чево я не так сделал?..... |
| Автор: srd 13.9.2004, 07:35 | ||||
| Ты бы сказал, что у тебя в строке 56 Попробуй
или
Насколько я помню Билдер, там VCL классы только в динамической памяти могут размещаться. А тут копирование объекта-исключения делалось |
| Автор: Sayrus 14.9.2004, 00:17 | ||
Попробовал всё тоже самое не хочет компилить и всё.... Да Билдер пятый может в нём както подругому?.............. |
| Автор: srd 14.9.2004, 02:24 |
| Так какой код у тебя в 56-ой строке? |
| Автор: Конструктор 14.9.2004, 09:02 | ||
Попробуй без try-catch
т.е. работать с файлом только если пользователь хоть что-то выбрал |
| Автор: Sayrus 15.9.2004, 03:20 | ||
Вот спасибо навел на правильную мысль, всего одной строки не хватало.............. void __fastcall TForm1::N2Click(TObject *Sender) { if(OpenDialog1->Execute()) { MediaPlayer1->FileName = OpenDialog1->FileName; MediaPlayer1->DeviceType = dtAutoSelect;----------вот этого не хватало !!!!! MediaPlayer1->Open(); StatusBar1->Panels->Items[0]->Text = OpenDialog1->FileName; TrackBar1->Max = MediaPlayer1->Length; } } Теперь всё работает |