Заставить приложение загружать и проигрывать звуковой файл
Священник, врач и программист играли вместе в гольф. Переходя от лунки к лунке, они вскорости догнали трех игроков, которые двигались страшно медленно. Возмущенные, они вызвали управляющего и спросили его, в чем дело?... Управляющий:
- Видите ли, несколько лет тому назад в нашем клубе был пожар. А эти трое ребят спасли нас от полного уничтожения. К сожалению, в результате ожогов они потеряли зрение. А мы в знак благодарности разрешили им играть у нас в гольф совершенно бесплатно.
Священник (сконфуженно):
- О!!! Я буду горячо молиться, чтобы Бог вернул им зрение!!
Bрач (виновато):
- Я знаком с одним из лучших офтальмологов мира. Может, он сможет...
Программист (небрежно):
- А че они ночью не играют!
Для проигрывания звукового файла используйте непосредственно функцию
sndPlaySound().
Считывайте звуковой файл в память, затем для его проигрывания используйте
sndPlaySound()
Используйте sndPlaySound для непосредственного проигрывания звуковых файлов,
расположенных в файлах ресурсов, прилинкованных к вашему приложению.
Считывайте звуковой файл, располагаемый в файле ресурса, прилинкованному к
вашему приложению, в память, и затем для его проигрывания используйте
sndPlaySound().
Для построения проекта вам понадобиться:
Создайте звуковой файл с именем 'hello.wav' в каталоге проекта.
Создайте текстовый файл с именем 'snddata.rc' в каталоге проекта.
Добавьте следующую строку к файлу 'snddata.rc': HELLO WAVE hello.wav
В dos-сессии перейдите в ваш каталог приложения и скомпилируйте .rc-файл,
используя компилятор ресурсов Borland (brcc32.exe): введите путь к brcc32.exe и
передайте 'snddata.rc' в качестве параметра.
Пример:
bin\brcc32 snddata.rc
Это создаст файл 'snddata.res', который Delphi слинкует с EXE-файлом вашего
приложения.
Далее приведен необходимый вам код:
unit PlaySnd1;
interfaceuses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
PlaySndFromFile: TButton;
PlaySndFromMemory: TButton;
PlaySndbyLoadRes: TButton;
PlaySndFromRes: TButton;
procedure PlaySndFromFileClick(Sender: TObject);
procedure PlaySndFromMemoryClick(Sender: TObject);
procedure PlaySndFromResClick(Sender: TObject);
procedure PlaySndbyLoadResClick(Sender: TObject);
private{ Private declarations }public{ Public declarations }end;
var
Form1: TForm1;
implementation{$R *.DFM}{$R snddata.res}uses MMSystem;
procedure TForm1.PlaySndFromFileClick(Sender: TObject);
begin
sndPlaySound('hello.wav', SND_FILENAME or SND_SYNC);
end;
procedure TForm1.PlaySndFromMemoryClick(Sender: TObject);
var
f: file;
p: pointer;
fs: integer;
begin
AssignFile(f, 'hello.wav');
Reset(f, 1);
fs := FileSize(f);
GetMem(p, fs);
BlockRead(f, p^, fs);
CloseFile(f);
sndPlaySound(p, SND_MEMORY or SND_SYNC);
FreeMem(p, fs);
end;
procedure TForm1.PlaySndFromResClick(Sender: TObject);
begin
PlaySound('HELLO', hInstance, SND_RESOURCE or SND_SYNC);
end;
procedure TForm1.PlaySndbyLoadResClick(Sender: TObject);
var
h: THandle;
p: pointer;
begin
h := FindResource(hInstance, 'HELLO', 'WAVE');
h := LoadResource(hInstance, h);
p := LockResource(h);
sndPlaySound(p, SND_MEMORY or SND_SYNC);
UnLockResource(h);
FreeResource(h);
end;
end.
Статья Заставить приложение загружать и проигрывать звуковой файл раздела Мультимедиа Аудио может быть полезна для разработчиков на Delphi и FreePascal.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.