Другие языки программирования и технологии

Delphi Тест. Выбор картинки по играющему звуку.

Необходимо сделать тест, показывает десять картинок и в это время играет один звук и нужно выбрать нужную картинку ( например картинка машины и рев двигателя) . Звуков соответсвенно тоже 10, для каждой картинки, что бы все картинку угадать. Загрузил картинки в массив и на форму. Звуки так, же.
pic:array[1..10] of TImage;
snd:array[1..10] of integer; //Беру по порядку пути к файлам mp3 и проигрываю.

Вот как мне сравнивать картинку и звук, что бы сделать тест. Необходимо получаеться вводить дополнительные индефикаторы, но я не разберусь (
Андрей Выходец
Андрей Выходец
74 410
пример для работы с mp3
http://programmersclub.ru/files/mp3_player.rar

Функция PlaySound

Эта функция может воспроизводить любые волновые звуки, а не только звуки событий Windows. Функция API Windows, параметры которой описаны в модуле mmsystem. Поэтому для использования этой функции в Ваших программах, необходимо включить в раздел uses модуль mmsystem. Функция PlaySound определена так:

function PlaySound(pszSound:PChar; hmod:HINST; fdwSound:Cardinal):boolean;

Параметр pszSound является нуль терминированной строкой (последний символ строки имеет нулевой код) , он определяет воспроизводимый звук. Параметр hmod используется в случае, когда звук берется из ресурса, поскольку мы этого делать не будем, то можно этот параметр задавать равным 0 или nil.

Последний параметр fdwSound является множеством, которое определяет как будет воспроизводиться звук (режим воспроизведения) . Приведу наиболее важные значения этого множества для воспроизведения произвольных волновых флагов.

* SND_ASYNC - Звук воспроизводится асинхронно и функция возвращается сразу же после начала воспроизведения. Чтобы прекратить воспроизведение нужно вызвать функцию PlaySound с параметром pszSound, равным 0.
* SND_LOOP - воспроизведение звука постоянно повторяется, одновременно надо установить флаг SND_ASYNC.
* SND_NOSTOP - Если заданный звук не может быть воспроизведен из-за занятости ресурсов, то функция немедленно вернет false (и звук не будет воспроизведен) . Если же данный флаг не указан, то функция попытается остановить воспроизведение другого звука, чтобы освободить ресурсы.
* SND_PURGE - Останавливает воспроизведение любых звуков, вызванных в данной задаче.
* SND_SYNC - Синхронное воспроизведение звука события. Функция PlaySound возвращается только после окончания воспроизведения.

Важно: флаги можно комбинировать операцией or.

Указанный параметром pszSound звук, должен подходить для установленного драйвера устройства воспроизведения волновых файлов, а также должен помещаться в доступную память.

Прервать воспроизведение звука можно выполнив оператор

PlaySound(0, 0, SND_PURGE);

или путем задания нового звука.

Например, чтобы многократно и асинхронно проиграть какой-нибудь звук, выбранный с помощью OpenDialog, можно написать такой код:

procedure TForm1.Button1Click(Sender: TObject);
var PCh: PChar;
begin
if OpenDialog1.Execute then
begin
StrPCopy(PCh,OpenDialog1.FileName);
PlaySound(Pch,0,SND_ASYNC or SND_LOOP);
end;
end;
АТ
Айторе Темирбекулы
13 113
Лучший ответ
Андрей Выходец Спасибо, Алексей вы как всегда непривзойденны!
Ты почаще облаивай местных отвечающих, тебе больше и чаще отвечать будут.
Андрей Выходец хм, я и не догадывался, что сдесь кружок неадекватных по интересам. Все такие гордые. ну-ну
Case Pic of
1:blabla;
2: blabla;
3:blabla;
4:blabla;
5:blabla;
6:blabla;
7:blabla;
8:blabla;
9:blabla;
end;