Не удается определить тип устройства по указанному расширению имени файла

Обновлено: 04.07.2024

Сообщество программистов
Общение, помощь, обмен опытом

Другие разделы портала

Переход к вопросу:

Статистика за сегодня:

Вопросы: 0
Ответы: 0
Мини-форумы: 0

Лучшие эксперты

Здравствуйте! Очень срочно нужна Ваша помощь!

Как мне правильно указать путь к файлу для компонента MediaPlayer. Дело в том что указывая путь к файлу в свойстве FileName он сохраняется, но на других компьютерах возникает ошибка "не праильно указан путь к файлу".

Здравствуйте, Romanov!
Видимо Вы просто указываете полный путь. И естественно, на другом компьютере его может не быть по указанному пути. Указывать относительный путь тоже не выход. Потому что может тоже не найти, если текущий каталог будет изменёт.
Правильно делать так. Мультимедийные файлы сохраняем в папку рядом с исполняемым файлом, например в media.
А когда надо указать путь к файлу (или в OnFormCreate) задаем его в виде
ExtractFilePath(Application.Exename)+'media\'+имяфайла

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 29 апреля 2009, 16:55

Может быть на других компах этот файл лежит в другом месте или вообще его там нету?
Если файл предполагается держать в одной папке с программой, то назначай плееру имя файла в Runtime, например:
Засунь куданить этот кусок. Либо в OnCreate главной формы, либо ещё куда, например вообще перед вызовом метода Show() главной формы в файле проекта (dpr).

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 29 апреля 2009, 16:57

Мини-форум вопроса

А по подробнее можно? Желательно ещё с кодом.

а где находится exe программы?
если например программа 'C:\Documents and Settings\Олег Романов\Рабочий стол\Программма\prog.exe'
то 'C:\Documents and Settings\Олег Романов\Рабочий стол\Программма\Data\DCD.wmv' для неё можно указать
так: '.\Data\DCD.wmv'

Цитата:


В том то и дело что мне желательно путь к файлу указать кодом. А как не знаю. В компоненте MediaPlayer в свойстве FileName открывая файл(видео.wmv) указываеться его прямой путь (C:\Documents and Settings\Олег Романов\Рабочий стол\Программма\Data\DCD.wmv). А мне нужно это как то обойти (чтобы сразу было \Data\DCD.wmv )

Ничо, брателло, привыкай. Все так начинали, это нормально. Мне 30,5 лет, а я до сих пор помню, как в школьные годы учился ваять проги на турбопаскале по одной единственной задрипанной книжке, когда про интернет ваще никто даже и не знал. Поверь, тебе будет проще, чем мне!

Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

min@y
Спасибо на добром слове, но не получается. Выдает ошибку:

Project Progect1.exe raised exception class EMCIDeviceErorr with message 'Не удается определить тип устройства по указаному расширению имени файла.'.Process stopped.

Я никогда не пользовался MediaPlayer'ом и не знаю, какие он поддерживает форматы. Знаю, что avi - точно воспроизводит. А насчет wmv не знаю.

Переконвертировал файл .wma в .avi и в свойстве DeviceType выставил AviVideo. Теперь банально не воиспроизводит. А если оставить dtAutoSelect выводит выше указаную ошибку.

Помогите умоляю. Преддипломная практика горит только из-за этого недоразумения.

А чем помочь то? у меня он воспроизводит и avi и другие.
PS wma в avi ? это как?
wmv - avi
wma - лучше wav хотя можно и mp3

Я сейчас попробовал. Нормально avi и wmv (Windows Media Video) открывает

Amidamaru
А ты этим способом пробовал?
MediaPlayer1.FileName:= ExtractFilePath(ParamStr(0)) + '1.avi';

а при чом здесь этот способ?
я MediaPlayer.FileName устанавливаю с помощью OpenDialog.FileName?но если туда поставить просто имя файла - всёравно работает.
И если расположить в тойже папке некий 1.avi - то твой "способ" тоже работает.
ИМХО у тебя проблема с твоим 1.avi или с кодеками.

:)

очень смешно. комуто. наверно.
я собственно сразу советовал использовать относительный путь без всяких ExtractFilePath

to all
относительные пути имеют ещё одну засаду. Если сделать ярлык на программу, то в его свойствах можно указать "рабочую директорию". А она стает текущей.
и Dir:=GetCurrentDir+'\'; уже возвращает её. Но ещё заметнее это стает, когда программа стает в автозапуск. Там такое.

Не знаю какое там "такое" в автозапуске с GetCurrentDir, но я проверял и уверен, что '.\' всегда указывает на папку, в которой находится exe прогрммы

Нет, не обязано. Не стоит надеяться. Да, может это работает в ХР, но может перестать работать в Виста. Подобные прецеденты уже были.

Читайте также: