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

Вниз

Зашивание wav а в res и его проигрывание   Найти похожие ветки 

 
Pasha L ©   (2005-08-08 17:26) [0]

Здравствуйте.
Я хочу, чтобы в моей программе было несколько wav"ов, и чтобы они там проигрывались. Я прочитал, то ли как зашить в ехешник звуки, то ли как зашить их в какой-то один файл. Короче. Я создал mywav.rc, в котором написал
sndkey RCDATA LOADONCALL snd.wav

Потом переписал brcc32.exe в папку, где я всё это делаю. Потом создал bat файл, где написал
brcc32.exe mywav.rc

Запустил bat и получил mywav.res. В моей проге после implementation и {$R *.dfm} написал
{$R mywav.res}
Потом по инструкции создал процедуру извлечения звука из res файла
procedure tform1.RetrieveWaves;
var
 hResource: THandle;
 pData: Pointer;
begin
 hResource:=LoadResource(hInstance, FindResource(hInstance, "sndkey", RT_RCDATA));
 try
   pData := LockResource(hResource);
   if pData = nil then
     raise Exception.Create("Cannot read sndkey");
   if not PlaySound("snd", 0, SND_MEMORY) then
     raise Exception.Create("Cannot play snd");
 finally
   FreeResource(hResource);
 end;
end;

Но вылезает "Cannot play snd". Вопросы:
1. Что неправильно?
2. Что в случае удачи дает мне этот способ (звук зашивается прямо эхэшник или только в res)?
3. Этим способом можно зашить несколько файлов или только один?


 
MetalFan ©   (2005-08-08 17:35) [1]

смотрим справку
BOOL PlaySound(
 LPCSTR pszSound,  
 HMODULE hmod,    
 DWORD fdwSound    
);
fdwSound

Flags for playing the sound. The following values are defined

SND_MEMORY - A sound event"s file is loaded in RAM. The parameter specified by pszSound must point to an image of a sound in memory.

pszSound должен указывать на загруженный в память звук)


 
MetalFan ©   (2005-08-08 17:44) [2]

з.ы. попробуй просто:
PlaySound("snd", 0, SND_RESOURCE)


 
Pasha L ©   (2005-08-08 17:45) [3]

иии?? то есть? о чем это говорит? что я неверно сделал?


 
Pasha L ©   (2005-08-08 17:46) [4]

нее. не выходит


 
Pasha L ©   (2005-08-08 17:56) [5]

в хелпе ещё говорится про какой-то waveform-audio, что именно он проирывет звук. Что это, waveform-audio? Может просто у меня его нет.


 
GuAV ©   (2005-08-08 17:57) [6]

Проще всего PlaySound("sndkey",Hinstance,SND_RESOURCE), при этом звук поместить в ресурс WAVE


 
Pasha L ©   (2005-08-08 18:03) [7]

GuAV ©   (08.08.05 17:57) [6]
поместил в wave.res. Всё равно не пашет


 
Наиль ©   (2005-08-08 18:16) [8]

Никогда в жизни не сталкивался с таким вопросом.
Поэтому использовал только ту информацию которую вы (вдвоём) здесь сообщили. Вот что получилось:
Var
rs:TResourceStream;
snd:Pointer;
begin
rs:=TResourceStream.Create(HInstance,"snd",RT_RCDATA);
snd:=GetMemory(rs.Size);
rs.Read(snd^,rs.Size);
PlaySound(snd,0,SND_MEMORY);
FreeMemory(snd);
rs.Free;

Работает!


 
Fay ©   (2005-08-08 18:18) [9]

>> поместил в wave.res. Всё равно не пашет
LOL!


 
GuAV ©   (2005-08-08 18:20) [10]


> поместил в wave.res. Всё равно не пашет


LOL.

mywav.rc:
sndkey WAVE snd.wav


 
Наиль ©   (2005-08-08 18:22) [11]

>[8]
End; в конце не до копировал


 
Pasha L ©   (2005-08-08 18:23) [12]

Наиль ©   (08.08.05 18:16) [8]
YYYYEEEESSSS!!!!!
спасибо

А можно как то в один res запихать несколько wavов?


 
Наиль ©   (2005-08-08 18:25) [13]

>[6]+[10]
Действительно ПРОЩЕ


 
Pasha L ©   (2005-08-08 18:35) [14]

//А можно как то в один res запихать несколько wavов?
Сам разобрался


 
Наиль ©   (2005-08-08 18:38) [15]

Несмотря на [14] высылаю устаревший совет
Я пользуюсь редактором ресурсов, поэтому не уверен но анализируя [10] можно предположить выглядеть mywav.rc будет выглядуть так:
snd1 WAVE snd1.wav
snd2 WAVE snd2.wav
snd3 WAVE snd3.wav
snd4 WAVE snd4.wav
и воспользуйся [6].
Если хочешь использовать [8] то замени RT_RCDATA на "WAVE".


 
Pasha L ©   (2005-08-08 19:00) [16]

Ясно. Существует, значит два способа. А можно ли эти вавы или рес зашить в сам эхэшник?


 
Fay ©   (2005-08-08 19:03) [17]

2 Pasha L ©   (08.08.05 19:00) [16]
Это шутка?


 
Pasha L ©   (2005-08-08 19:07) [18]

Отнюдь


 
Fay ©   (2005-08-08 19:08) [19]

2 Pasha L ©   (08.08.05 19:07) [18]
>> А можно ли эти вавы или рес зашить в сам эхэшник
А где они ("вавы или рес") чичяз, по-вашему?


 
Pasha L ©   (2005-08-08 19:22) [20]

Звуки находятся как я понял в res файле. Я попробовал удалить res и запустить после этого прогу в Дельфи. Он ругнулся. Но как я понимаю, если просто запустить прогу (не из Дельфи), то ругаться не станет. Вроде, так и есть.
Спа


 
Fay ©   (2005-08-08 19:28) [21]

2 Pasha L ©   (08.08.05 19:22) [20]
>> Спа
Не з


 
Наиль ©   (2005-08-08 19:37) [22]

На счёт двух способов. Надеюсь ты догадался что одна строчка из [6] заменяет все строчки из [8].



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

Форум: "Основная";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.038 c
4-1117686064
Sir
2005-06-02 08:21
2005.08.28
Серийный номер видеокарты & материнской платы


14-1122940679
!Han!
2005-08-02 03:57
2005.08.28
Потскажите что такое canvas


4-1120582829
q1w2e3
2005-07-05 21:00
2005.08.28
Фильтр ввода на API


1-1123169990
MaxVal
2005-08-04 19:39
2005.08.28
Добавление AVI-файла в EXE-файл!


14-1123156968
Knight
2005-08-04 16:02
2005.08.28
Подскажите алгоритм по которому можно отрисовать...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский