Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.01.2009, 15:28
kaizer131 kaizer131 вне форума
Начинающий
 
Регистрация: 01.11.2008
Сообщения: 112
Репутация: 10
По умолчанию Музыка в EXE файле

Всех с наступившим !!!
Кто подскажет , кто расскажет, кто покажет ?
В проэкте используется музыка , которая воспроизводиться компонентом MediaPlayer при открытии формы, вот только проблема файл EXE запущенный на другом компе не запускается , если убрать воспроизведение, то идет без проблем, как сделать такчтоб файл с музыкой находился в EXE шнике?
Поискал на форуме , была одна тема да только совет данный там не работал...
Ответить с цитированием
  #2  
Старый 04.01.2009, 16:06
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Варианты:
1. Просто класть муз. файл рядом с ехе и использовать относительные пути к нему.
2. Класть в ресурсы, при запуске вытаскивать оттуда и проигрывать.

Первый проще, второй - красивее.
Ответить с цитированием
  #3  
Старый 04.01.2009, 16:32
kaizer131 kaizer131 вне форума
Начинающий
 
Регистрация: 01.11.2008
Сообщения: 112
Репутация: 10
По умолчанию

пробовал в ресурсы, не получалось, может не так делал?
Ответить с цитированием
  #4  
Старый 04.01.2009, 16:49
Аватар для 0nni
0nni 0nni вне форума
Начинающий
 
Регистрация: 13.12.2008
Адрес: Туапсе
Сообщения: 161
Репутация: 20
По умолчанию

Если ты хочешь воспроизвести wav звук через mmSystem то учти, что он должен быть несжатый.
Просто через PlaySound() проигрывается?
__________________
...сказал, и загрустил от бесспорной своей правоты
Ответить с цитированием
  #5  
Старый 04.01.2009, 17:33
kaizer131 kaizer131 вне форума
Начинающий
 
Регистрация: 01.11.2008
Сообщения: 112
Репутация: 10
По умолчанию

Делал все как описанно ниже:

Итак, наша задача засунуть mp3 в нашу программу и заставить его воспроизводиться по комманде. Для этого нам, разумеется, понадобится сам файл.
Для тех кто не знает, как добавить его в ресурсы своей программы:
Создаем текстовый файл с именем sounds.rc
Прописываем в него наши файлы. Каждый файл в ресурсах = 1 строке. Пример содержимого файла:

SND1 WAVE 1.wav
SND2 WAVE Bum.wav
SND3 WAVE Crazy.wav
Первое слово - имя, которое мы будем указывать в программе.
Второе - тип ресурса = wav файл
Третье - имя файла
сохраняем файл.
Компилим его из коммандной строки: brcc32 sounds.rc
В результате получаем откомпиленный файл - sounds.res.
Второй этап:
В программе подключаем этот файл:
{$R sounds.res}
Теперь для воспроизведения звука нужно дать комманду:
PlaySound('SND1', 0, SND_RESOURCE or SND_ASYNC);
, где первым параметром - имя, назначенное нами файлу в файле ресурсов

но не понял там одного:
-Компилим его из коммандной строки: brcc32 sounds.rc
Делал ,но он говорит чтоэтот файл не является приложением
Ответить с цитированием
  #6  
Старый 04.01.2009, 18:04
Аватар для 0nni
0nni 0nni вне форума
Начинающий
 
Регистрация: 13.12.2008
Адрес: Туапсе
Сообщения: 161
Репутация: 20
По умолчанию

В папке delphi X\bin есть brcc32.exe просто перетащи на него свой rc файл.
Обрати внимание, рябом с sounds.rc должен появиться sounds.res иначе ты что то неправильно сделал.
А еще лучшее в реестре настрой ассоциации.
Насчет WAVE не уверен попробуй еще RCDATA.
__________________
...сказал, и загрустил от бесспорной своей правоты

Последний раз редактировалось 0nni, 04.01.2009 в 18:06.
Ответить с цитированием
  #7  
Старый 04.01.2009, 19:53
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Цитата:
Сообщение от kaizer131
...файл EXE запущенный на другом компе не запускается ... если убрать воспроизведение, то идет без проблем...
- Можно ли утверждать, что "не запускается", если уже запущен?
- "идет без проблем" куда (или что)?
- На другом компе может быть не установлен декодер mp3.
__________________
Не забывайте делать резервные копии
Ответить с цитированием
  #8  
Старый 04.01.2009, 21:05
kaizer131 kaizer131 вне форума
Начинающий
 
Регистрация: 01.11.2008
Сообщения: 112
Репутация: 10
По умолчанию

немогу найти файл ни в ручную ни через поиск brcc32.exe его нет в системе
Ответить с цитированием
  #9  
Старый 05.01.2009, 00:40
Аватар для Thrasher
Thrasher Thrasher вне форума
Illuminati
 
Регистрация: 06.03.2008
Адрес: Крым, г. Симферополь
Сообщения: 348
Репутация: 8808
По умолчанию

Как вариант - использование оверлея.
__________________
Хорошо написанная программа не требует документации
ICQ 9-184-668.
Ответить с цитированием
  #10  
Старый 05.01.2009, 12:49
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Правильно, как предложил Thrasher, можно использовать оверлей, так же можно и использовать так называемую трекерную музыку, это как в кейгенах, на delphilab есть целая статья с исходниками как добавить музыку, как ее проиграть и прочее.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #11  
Старый 05.01.2009, 19:00
kaizer131 kaizer131 вне форума
Начинающий
 
Регистрация: 01.11.2008
Сообщения: 112
Репутация: 10
По умолчанию

Цитата:
немогу найти файл ни в ручную ни через поиск brcc32.exe его нет в системе

Нашел скомпилил, вставил, при компиляции он выдал:


[DCC Warning] Dor.pas(41): W1035 Return value of function 'TForm1.PlaySound' might be undefined

[DCC Error] E1026 File not found: 'sounds.res'

Вот код , как вставлял:
Код:
unit Dor;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls, MPlayer,mmsystem;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    MediaPlayer1: TMediaPlayer;
    procedure Label1Click(Sender: TObject);
    procedure Label2Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    function PlaySound(pszSound:PChar; hmod:HINST; fdwSound:Cardinal):boolean;


  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
uses name,shcool;
var
A:integer;

{$R *.dfm}
 {$R sounds.res}
function TForm1.PlaySound(pszSound: PChar; hmod: HINST;
  fdwSound: Cardinal): boolean;
begin
PlaySound('Doraemon', 0, SND_RESOURCE or SND_ASYNC);
end;


procedure TForm1.FormActivate(Sender: TObject);
begin

 PlaySound('Doraemon', 0, SND_RESOURCE or SND_ASYNC);
end;
Подскажите, плиз
Ответить с цитированием
  #12  
Старый 05.01.2009, 20:59
Аватар для 0nni
0nni 0nni вне форума
Начинающий
 
Регистрация: 13.12.2008
Адрес: Туапсе
Сообщения: 161
Репутация: 20
По умолчанию

А sounds.res где лежит? В твоем случае он должен лежать вместе с dpr-файлом.
__________________
...сказал, и загрустил от бесспорной своей правоты
Ответить с цитированием
  #13  
Старый 06.01.2009, 05:16
kaizer131 kaizer131 вне форума
Начинающий
 
Регистрация: 01.11.2008
Сообщения: 112
Репутация: 10
По умолчанию

Лежит в в тойже папке что и dpr
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:36.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter