|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.09.2018, 09:46 | #1 |
Пользователь
Регистрация: 21.08.2018
Сообщений: 24
|
вроде бы все верно, но мелодия почему то не играет, ошибки не выдает, что может быть не так?
Код:
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ) Модератор Последний раз редактировалось Serge_Bliznykov; 02.09.2018 в 10:53. |
02.09.2018, 11:00 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
я бы начал с того, что убрал проверку и указал ПОЛНЫЙ путь к файлу:
например: Код:
Если MediaPlayer отработает (кстати, а он вообще в консольном приложении должен работать?), тогда последовательно вернуть сначала проверку на время и проверить. Потом уже разбираться с относительным путём. С относительным путём надо быть очень осторожным - даже если ваша программа EXE лежит на рабочем столе и там же, на рабочем столе лежит ваш mp3 файл, то совсем не обязательно, что текущая папка запуска программы является именно рабочий стол. Если так уж нужны именно относительные пути, то я бы предложил положить mp3 и EXE в одну папку и в коде получать путь EXE и уже от него брать путь к MP3 - это будет намного надёжнее. p.s. и если у Вас бесконечный цикл do {} while (true); - как в прошлой теме - то нужно это цикл убрать. Так делать нельзя!! |
02.09.2018, 11:14 | #3 |
Пользователь
Регистрация: 21.08.2018
Сообщений: 24
|
почему нельзя использовать цикл do{}while(true), в данном случае?)
|
02.09.2018, 11:40 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
потому что
1) это неэффективно (практически 100% загрузка процессора) представьте - тысячу раз в секунду нужно получить данные и проверить условие. процессор ничем другим заниматься не будет, только этим. 2) возможно, что это и ещё и не будет работать, так, как задумано. потому что в цикле выполняется player.Play() - если он остановит поток выполнения, то программа не будет ни на что реагировать, пока не доиграет файл, а если (что скорее) - player.Play() запускает отдельный поток воспроизведения, то цикл продолжится выполняться далее, опять выполнится условие (оно же за доли секунды, пока запускался mp3 файл, не изменилось) и опять запустится MP3 файл и так в цикле, пока не кончатся ресурсы компьютера. Можно, конечно, доработать и ваш цикл (вставить туда задержки и вызов системеной функции обработки оконных сообщений, чтобы программа "не зависала"), так будет работать, но это всё не нужно - нужно делать правильно! Как вариант - использовать системный таймер и создавать его обработчик. Есть и другие варианты. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите понять,почему препод придирается к коду,хотя вроде как все верно,следуя условиям | Delphilol | Паскаль, Turbo Pascal, PascalABC.NET | 8 | 20.02.2018 11:08 |
Посмотрите) Вроде правильно все но не работает. Что не так? | Bane | БД в Delphi | 14 | 13.03.2014 22:14 |
Почему данный код закрашивает сразу 2 рядом стоящих пикселя а не один как вроде бы должно быть | androk | Общие вопросы C/C++ | 1 | 10.11.2011 22:20 |
Как извлечь музыку из файла или может кто знает, что играет? | Marsel737 | Свободное общение | 13 | 16.08.2011 20:53 |
Может быть так, что в мамку может попасть вирус и не загружать жесткий диск | Berzhan | Операционные системы общие вопросы | 6 | 27.07.2009 21:40 |