Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.043 c
3-1126727890
partizan
2005-09-14 23:58
2005.10.23
как логинтся под админом в IB ?


9-1118343860
Ksander
2005-06-09 23:04
2005.10.23
игра


14-1128167883
Softwood inc.
2005-10-01 15:58
2005.10.23
ProgDVB


2-1128239239
elysee
2005-10-02 11:47
2005.10.23
CSV(MS-DOS)


14-1127910731
ZeroDivide
2005-09-28 16:32
2005.10.23
Новый девайс для идентификации личности





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский