![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| alexamur |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 7.3.2009 Репутация: нет Всего: нет |
Имеется простая форма, содержащая несколько кнопок, при открытии которой нужно воспроизвести миди-файл n-ное количество раз, например 2 раза.
|
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
TMediaPlayer
Или по онШоу что нить вроде этого делать
|
|||
|
||||
| alexamur |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 7.3.2009 Репутация: нет Всего: нет |
~FoX~ Спасибо! Здорово! Прошу не удивляться моей реакции - мой статус очевиден. Но есть маленькое но: как все это сделать, чтобы миди файл был в теле программы? Да, и "очепятка" наверное, не mymidi.mdi, а *.mid. Но это неважно, главное суть понятна. Так что большой респект!
|
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
alexamur, Засовывай в ресурсы экзешника, или просто рядом харни ресурс....
Да, очепятка....но писал в барузере, так что думаю простительно ... |
|||
|
||||
| alexamur |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 7.3.2009 Репутация: нет Всего: нет |
||||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 5 Всего: 128 |
обычно на форумах принято общаться либо в открытую, либо по ЛС(мылу, асе, ирке). а запостив последнее сообщение вы поступаете очень некрасиво по отношению к другим участникам форума. -------------------- There are always someone smarter than you... |
|||
|
||||
| alexamur |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 7.3.2009 Репутация: нет Всего: нет |
Я извиняюсь, но сделал это потому, что вопрос скорее "чайниковый", именно такой уровень знаний по Делфи сейчас у меня. А ~FoX~ мне ответил, вот я ему и написал. Вот в принципе содержание:"...Ресхакером запихал в ексешник ресурс миди, но кина никакого нет: все открывается, но молчит, как рыба. Хотелось бы реальный кусочек кода, разумеется если возможно. Вообще задумка примитивно проста: на форме есть TImage, в качестве фона открытка, есть кнопка закрытия формы. При открытии .exe проигрывается что-нибудь легковесное миди. И чтобы все это в одном .ехе ..." |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 5 Всего: 128 |
я не к тому, что вопрос "чайниковый" или "для профи". а к тому, что сказал на форуме А, говори и Б тоже на форуме.
по поводу ресурсов... я бы порекомендовал воспользоваться "долгим" путем с вкомпилом ресурса средствами делфи (ПОИСК), а не ресхакером. тогда и под отладкой можно былоб посмотреть, почему не грузится. так же, если хочешь, чтобы быстро помогли, выкладывай пример исходного кода, который не работает. а еще лучше пример проекта. Это сообщение отредактировал(а) MetalFan - 9.3.2009, 12:02 -------------------- There are always someone smarter than you... |
|||
|
||||
| ~FoX~ |
|
||||||||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
alexamur, Ресхакром это конечно нашь метод решения проблемы, но я бы поступил проще )))
Создаем текстовый файл в него пишем что нить вроде такого:
Пускай лежит например в корне диска c:\ Переименовываем его во что нить вроде MyRes.rc Туда же в корень кладем сам mymid.mid Запускаем cmd и в нем пишем:
Давим ентер. Появиться файл MyRes.res его копируем в папку с проектом... после implementation пишем
В коде пишем:
собственна и вся премудрость... |
||||||||
|
|||||||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 5 Всего: 128 |
а худо от такого не будет? играем асинхронно, и сразу убиваем ресурс.... -------------------- There are always someone smarter than you... |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
MetalFan, Ндя, понедельник- вечер....Ну забыл я try...finally или if поставить
Это сообщение отредактировал(а) ~FoX~ - 9.3.2009, 18:39 |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 5 Всего: 128 |
~FoX~, да нет, я не про то) я не уверен на 100%, что это не правильно, но не будет ли проблемы, что звук воспроизводится АСИНХРОННО, а ресурс, из которого происходит воспроизведение убивается?
-------------------- There are always someone smarter than you... |
|||
|
||||
| alexamur |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 7.3.2009 Репутация: нет Всего: нет |
Выяснилось, что миди, из ресурсов sndPlaySound не воспроизводит. Формат .wav, .avi, mp3 воспроизводится нормально.
|
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
alexamur, Идея...извлекаем фало из ресурсов, сохраняем куда нить рядышком, проигрываем через MCISendString и убиваем его...Или убиваем его перед выходом...
|
|||
|
||||
| alexamur |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 7.3.2009 Репутация: нет Всего: нет |
||||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
Щаз под рукой нету ничего из компиляторов, так что только идея...
|
|||
|
||||
| alexamur |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 7.3.2009 Репутация: нет Всего: нет |
Нихт арбайтен
и еще выводится окно "Не найден ресурс p:D" |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 5 Всего: 128 |
ну прально, у ресурса какой идентификатор?
-------------------- There are always someone smarter than you... |
|||
|
||||
| alexamur |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 7.3.2009 Репутация: нет Всего: нет |
||||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 5 Всего: 128 |
alexamur, а в параметре RID что передается?
-------------------- There are always someone smarter than you... |
|||
|
||||
| alexamur |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 7.3.2009 Репутация: нет Всего: нет |
Наверное я повеселю Вас: а как узнать ID ресурса?
|
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 5 Всего: 128 |
alexamur, повеселил. какой установишь ID, такой и будет. к ресурсу можно обратиться как по имени, так и по ID.
Добавлено через 1 минуту и 46 секунд
достаточно просто указать hInstance вместо Application.Handle. так же должна быть функция с примерным названием TResourceStream.CreateFromName -------------------- There are always someone smarter than you... |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
alexamur, фиг с ним с идом....Будем рулить тем что есть под рукой
Плюём на варнинг ибо не его собачье дело.... |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 5 Всего: 128 |
-------------------- There are always someone smarter than you... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Правильно будет не Application.Handle, HInstance - т.е. базовый адрес приложения в его виртуальном адресном пространстве или HInstance Dll если ресурс находиться в Dll.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| alexamur |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 7.3.2009 Репутация: нет Всего: нет |
Alexeis - HInstance реально работает - спасибо
- с Application.Handle со ссылкой на имя не работает Сейчас компилируется без ошибок, создает из ресурса, по указанному пути, реальный миди-файл, но не воспроизводит его. Как это организовать? И чтобы после закрытия формы миди убивался?
|
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 5 Всего: 128 |
-------------------- There are always someone smarter than you... |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
Ну дык уважаемый...
Это сообщение отредактировал(а) ~FoX~ - 13.3.2009, 15:04 |
|||
|
||||
| alexamur |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 7.3.2009 Репутация: нет Всего: нет |
Так в том и вопрос, что не знаю, как заставить "петь" мидюшку. А ОН - это миди-файл. Ну "слабоват еще в коленках"...да и раньше еще говорил, что из кухонной утвари...чайник... Добавлено через 3 минуты и 9 секунд О.... сорри...пока писал я, ответил ~FoX~ СПАСИБО. Вот сейчас поизучаю все это - отпишусь |
|||
|
||||
| alexamur |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 7.3.2009 Репутация: нет Всего: нет |
Ну вот...сейчас играет вовсю, но только при закомментированной последней подпрограмме
В принципе, play останавливать и не надо (в моем случае) - при закрытии формы и так stop. А вот удалить файл желательно. Не нашел ничего лучше, чем спрятать извлекаемый файл куда подальше. Во как ругается : [Error] Unit1.pas(31): Undeclared identifier: 'FormClose' [Error] Unit1.pas(31): ';' expected but ')' found [Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit1.pas' |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
alexamur, Читаем, переводим, офигиваем от собственной невнимательности...
Лезим в инспектор объектов, смотрим события у формы.....Дважды тыкаем на onClose, и в появившемся коде пишем все что нужно... Проверяем количество открывающихся скобок и закрывающихся ))) Это сообщение отредактировал(а) ~FoX~ - 14.3.2009, 22:04 |
|||
|
||||
| alexamur |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 7.3.2009 Репутация: нет Всего: нет |
эт-т точно...наивно полагал, что забив все врукопашную будет работать как надо, ан нет, не декларируется таким образом событие в коде. Сейчас все работает, компилятор не ругается, но после закрытия формы миди.мид не удаляется |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 5 Всего: 128 |
а ты его удаляешь? или думаешь, что само должно? )) -------------------- There are always someone smarter than you... |
|||
|
||||
| alexamur |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 7.3.2009 Репутация: нет Всего: нет |
..ну вот так прописал...
мидюшка без абсолютного пути (чтобы нельзя было запустить с CD или заблокированных флопов, флэшек), создается рядом с ексэшником... |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 5 Всего: 128 |
alexamur, лучше пути пропиши, а то может достаточно непредсказуемо себя вести)
-------------------- There are always someone smarter than you... |
|||
|
||||
| alexamur |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 7.3.2009 Репутация: нет Всего: нет |
||||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
alexamur, Лучше все таки рядом с самой прогой хранить
|
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 5 Всего: 128 |
-------------------- There are always someone smarter than you... |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 1 Всего: 88 |
когда-то я делал такой фокус - грузил длл с ресурсами, получал указатель на ресурс, давал той странице разрешение на копирование при записи и менял ресурс в памяти. Потом освобождал ресурс, но не выгружал длл После этого чужой код (который загружал этот ресурс по имени в рамках моего процесса) при загрузке ресурса получал мою измененную область. Изменения оставались до ваыгрузки длл. Это я не к тому, что так нужно делать, а к тому чтобы прояснить что присходит. С переходом на виртуальные адресные пространства (на вин95) загрузка ресурса, это всего лишь получение указателя на ресурс, который уже давно спроецирован на память вместе с модулем, где он лежит. А освобождение ресурса просто ничего не делает, и оставлено для совместимости API -------------------- Обижено школьников: 8 |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 5 Всего: 128 |
bems, ну если это действительно так...
да, ты прав:
Это сообщение отредактировал(а) MetalFan - 19.3.2009, 19:31 -------------------- There are always someone smarter than you... |
|||
|
||||
| alexamur |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 7.3.2009 Репутация: нет Всего: нет |
По большому счету все работает так, как мне нужно, за исключением того, что не добился удаления миди-файла после закрытия окна. Поэтому оставил все как есть. Всем большой респект! Тему можно закрывать.
|
|||
|
||||
| AntonN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: 7 Всего: 18 |
вот тут есть игрушка "Battle Scroller" http://desksoft.ru/index.php?files&id=3&owner=3
там миди играется из TmemoryStream, сам файл звука хранится на диске сжатым, распаковывается в память ииграется без пересохранений. Думаю не будет проблем перегнать TResourceStream в Tmemorystream, к тому же еще можно добавить сжатие (zlib) и уменьшить факт воровства файла через редакторы ресурсов. PS В юните MidiFile нужно удалить из uses inifiles, и все что с ним связано, забыл подчистить отладочный вывод, он пытается сохранить ini в C:\ |
|||
|
||||
![]()
|
| Правила форума "Delphi: Звук, графика и видео" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |