Создаешь пустой файл MyWave.rc пишешь в него одну строку:
Код
MyWave RCDATA LOADONCALL MyWave.wav
Далее в командной строке выполняешь brcc32.exe MyWave.rc, получаешь готовый ресурсный файл MyWave.res. В своей программе пишешь следующее, для включения его в исполняемый модуль программы:
Код
{$R MyWave.res}
При компиляции этот ресурс прилинкуется в EXE и внешний ресурс уже не нужен. Далее, в проекте создаешь процедуру (или пишешь прямо в FormShow):
Код
procedure RetrieveMyWave;
var
hResource: THandle;
pData: Pointer;
begin
hResource:=LoadResource( hInstance, FindResource(hInstance, 'MyWave', RT_RCDATA));
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;
Здесь этот файл сначала загружается из ресурса, а затем воспроизводится. Для апишной функции PlaySound нужно подключить модуль MMSystem.
Правда, должен заметить, что для MIDI-файла процедура PlaySound не сработала. Так что для воспроизведения MIDI придется использовать другие функции, вроде midiOutOpen или еще чего.