Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.23;
Скачать: CL | DM;

Вниз

присоединение файла   Найти похожие ветки 

 
Andrey235   (2005-09-28 09:28) [0]

как присоединить файл *.waw или *.mp3 к моему exe_шнику?


 
Gydvin ©   (2005-09-28 09:40) [1]

///Nomadic

Можно ли сделать так, чтобы в исполняемом файле программы находился какой-нибудь звук в формате .wav, и можно было бы проиграть этот звук?

Создаешь в папке проекта файл MyWave.rc  туды пишешь:

 
MyWave RCDATA LOADONCALL MyWave.wav

в командной строке пишешь
brcc32.exe полный путь /MyWave.rc,
получаешь MyWave.res.
В своей программе пишешь:

--------------------------------------------------------------------------------
   {$R MyWave.res}  

Все!

Предупреждая следующий твой вопрос "а как прочитать wave-файл из исполняемого файла?"

--------------------------------------------------------------------------------
   procedure RetrieveMyWave;
var

hResource: THandle;
pData: Pointer;
begin

hResource:=LoadResource( hInstance, FindResource(hInstance, "MyWave", RT_RCDA
TA));

try
pData := LockResource(hResource);

if pData = nil then
raise Exception.Create("Cannot read MyWave");

// Здесь pData указывает на MyWave
// Теперь можно, например, проиграть его (Win32):
PlaySound("MyWave", 0, SND_MEMORY);
finally
FreeResource(hResource);
end;
end;


 
Andrey235   (2005-09-28 16:10) [2]

ни чё не понял


 
Джо ©   (2005-09-28 16:31) [3]


>  [2] Andrey235   (28.09.05 16:10)
> ни чё не понял

Это плохо.


 
Кефир87 ©   (2005-09-28 16:40) [4]


> Andrey235   (28.09.05 16:10) [2]
>
> ни чё не понял


Так может и не стоит тебе этого делать, раз таких простых весчей не понимаешь. Я имею в виду "всему свое время"...


 
Profi ©   (2005-09-28 20:55) [5]

Andrey235   (28.09.05 16:10) [2]
Попарся и все получится.


 
z007   (2005-09-29 01:40) [6]

Мастера мимо этого раздела без шуток не ходят...
Gydvin дал старый, но, действительно, не сразу понятный ответ.
"Где скачать файл MyWave.wav?" :)
Без него ничего не получается...
На самом деле есть 2 способа:
1. Действительно, использовать ресурсы. Но на сегодня уже давно гораздо удобнее использовать встраиваемые в IDE редакторы ресурсов проекта (такой был, кажется в rxlib).
Потом из ресурса загружаем и проигрываем. Правда, mp3 вряд ли удастся прочитать как рассказал Gydvin:(
Боюсь, что ресурс придется извлекать во временный файл - ч/з ResourceStream(?).
2. Другой вариант - дописывать файл в конец exe, потом его оттуда читать (тоже, боюсь, во временный файл) и делать с ним что заблагорассудится.
Второй вариант хорош тем, что на стадии компиляции файл не присоединяется, можно дописать его к уже готовой программе (или dll) в т.ч. чужой. Этим же и плох.


 
Fay ©   (2005-09-29 14:09) [7]

2 z007 (29.09.05 1:40) [6]
>> Другой вариант - дописывать файл в конец exe,
Извращение. Ахтунг!


 
Gydvin ©   (2005-09-29 15:12) [8]

Потом из ресурса загружаем и проигрываем. Правда, mp3 вряд ли удастся прочитать как рассказал Gydvin:(

А это и так для wav, для mp3 действительно (наско-ко я знаю) надо извлекать на хард и потом проигрывать, хотя может я и ошибаюсь (как-то незадавался этой проблемой)


 
Gydvin ©   (2005-09-29 15:39) [9]

Andrey235   (28.09.05 16:10) [2]
ни чё не понял


Чего ж тут непонятного, я сам учился по этому примеру и все вышло с первой попытки.

Кидаешь свой wav  в папку пректа назови его MyWave.wav
создай новый текстовый файл напиши там

MyWave RCDATA LOADONCALL MyWave.wav
сохрани закрой, переменуй его в MyWave.rc
далее у тя в меню пуск/ выполнить там пишешь

brcc32.exe полный путь /MyWave.rc, ///полный путь в смысле полный путь до твоего MyWave.rc
жмешь ок в твоей папке проекта должен появится MyWave.res
в своей юните где {$R *.dfm}
пишешь
{$R MyWave.res}  

кидаешь button1  в обработчик которого добавляешь

var

hResource: THandle;
pData: Pointer;
begin

hResource:=LoadResource( hInstance, FindResource(hInstance, "MyWave", RT_RCDA
TA));

try
pData := LockResource(hResource);

if pData = nil then
raise Exception.Create("Cannot read MyWave");

// Здесь pData указывает на MyWave
// Теперь можно, например, проиграть его (Win32):
PlaySound("MyWave", 0, SND_MEMORY);
finally
FreeResource(hResource);
end;
end;


компилишь нажимаешь буттон должна зазвучать музыка, овации!


 
Andrey235   (2005-09-30 09:18) [10]

компилишь нажимаешь буттон  зазвучит музыка, овации!


 
Andrey235   (2005-09-30 13:37) [11]

Только проигрывается она из WAV а не из res При удалении wav и rc прога выдаёт звук ошибки
функция  PlaySound("MyWave", 0, SND_MEMORY);
с последним параметром SND_MEMORY не работает ставишь SND_SYNC  и всё нормально...
а можно ли проигрывать res не через WIN32


 
Gydvin ©   (2005-09-30 14:59) [12]

Только проигрывается она из WAV а не из res

Быть токого немогет


 
z007   (2005-09-30 21:23) [13]

2Fay

>> Другой вариант - дописывать файл в конец exe,
>>Извращение. Ахтунг!

вполне распространенная практика в установщиках, некоторых презениациях , в проекторе Flash.


 
Starcom ©   (2005-10-01 01:23) [14]

Gydvin ©   (29.09.05 15:39) [9]

Сделал как вы и написали и вот что пишет компилятор
может чтото надо в юзес написать или нет...

Build
 [Error] MyRegistry.pas(67): Undeclared identifier: "PlaySound"
 [Error] MyRegistry.pas(67): Undeclared identifier: "SND_MEMORY"


 
Джо ©   (2005-10-01 02:30) [15]


>  [14] Starcom ©   (01.10.05 01:23)

uses MMSystem;


 
Starcom ©   (2005-10-01 11:32) [16]

Джо ©   (01.10.05 02:30) [15]

Мастера в примерах всегда про это забывают! Пасибо!

С Уважением Starcom! :)


 
Starcom ©   (2005-10-01 11:51) [17]

Andrey235   (30.09.05 13:37) [11]

У меня тоже самое!

Мастера что за неточность в источниках!


 
Starcom ©   (2005-10-01 14:28) [18]

Ну и Шо! Или семечки полузгаем! :)


 
Gydvin ©   (2005-10-01 14:53) [19]

Не знаю что у вас попробуйте так:

в Mywave.rc написать
MyWave Wave MyWave.wav

а в буттоне
PlaySound("mywave", hInstance, SND_RESOURCE or SND_SYNC);

только опробывал все ровно.


 
Starcom ©   (2005-10-01 15:33) [20]

Gydvin ©   (01.10.05 14:53) [19]

Всё О"Кей! Так в чём же баг!


 
Gydvin ©   (2005-10-01 16:15) [21]

Starcom ©   (01.10.05 15:33) [20]

Несмотрел, некогда


 
Starcom ©   (2005-10-01 17:00) [22]

Gydvin ©   (01.10.05 16:15) [21]

Бай! ;{



Страницы: 1 вся ветка

Текущий архив: 2005.10.23;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.042 c
9-1118119264
!Trinix
2005-06-07 08:41
2005.10.23
Оптимизация glscene


11-1109647517
hotes
2005-03-01 06:25
2005.10.23
Модуль Windows


14-1128028120
Германн
2005-09-30 01:08
2005.10.23
<Цитата> для ответов


1-1127741397
userrrrr
2005-09-26 17:29
2005.10.23
как присоеденит к программе без формы иконку?


5-1103569355
klyonov
2004-12-20 22:02
2005.10.23
Установить значение свойства