Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Как воспроизвести звук ?


Автор: RNT 13.8.2009, 12:47
Здравствуйте. Подскажите как сделать чтобы функция sndPlaySound могла воспроизвести звуковой файл, путь к которому содержится в OpenDialog1->FileName.
Код

//Почемуто так не работает
sndPlaySound(PChar(OpenDialog1->FileName) , SND_SYNC);
sndPlaySound(OpenDialog1->FileName , SND_SYNC);

Автор: azesmcar 13.8.2009, 15:28
Цитата(RNT @  13.8.2009,  12:47 Найти цитируемый пост)
//Почемуто так не работает

А какой файл? MP3? smile 

Автор: RNT 13.8.2009, 15:32
wav . sndPlaySound ничего другого не может воспроизвести, насколько я знаю

Автор: azesmcar 13.8.2009, 15:36
Цитата(RNT @  13.8.2009,  15:32 Найти цитируемый пост)
wav . sndPlaySound ничего другого не может воспроизвести, насколько я знаю 

Да, потому и спросил.
sndPlaySound(PChar(OpenDialog1->FileName) , SND_SYNC);
OpenDialog1->FileName это AnsiString если не ошибаюсь, попробуй OpenDialog1->FileName.c_str() и убери PChar.

sndPlaySound(OpenDialog1->FileName.c_str(), SND_SYNC);

Автор: RNT 13.8.2009, 18:21
Цитата

sndPlaySound(OpenDialog1->FileName.c_str(), SND_SYNC);

Не компилится (у меня C++ Builder 2009) 
[BCC32 Error] MainUnit.cpp(137): E2034 Cannot convert 'wchar_t *' to 'const char *'
[BCC32 Error] MainUnit.cpp(137): E2342 Type mismatch in parameter 'pszSound' (wanted 'const char *', got 'wchar_t *')

Автор: azesmcar 13.8.2009, 19:03
Проект видимо юникодный, замени функцию на sndPlaySoundA
Код

sndPlaySoundA(OpenDialog1->FileName.c_str(), SND_SYNC);

Автор: RNT 13.8.2009, 19:07
Цитата

sndPlaySoundA(OpenDialog1->FileName.c_str(), SND_SYNC);

Не компилится
[BCC32 Error] MainUnit.cpp(149): E2034 Cannot convert 'wchar_t *' to 'const char *'
[BCC32 Error] MainUnit.cpp(149): E2342 Type mismatch in parameter 'pszSound' (wanted 'const char *', got 'wchar_t *')

Автор: azesmcar 13.8.2009, 19:10
Цитата(RNT @  13.8.2009,  19:07 Найти цитируемый пост)
Не компилится

тьфу, наоборот надо было, у тебя имя файла юникодное smile 
Код

sndPlaySoundW(OpenDialog1->FileName.c_str(), SND_SYNC);

Автор: RNT 13.8.2009, 19:21
Цитата

sndPlaySoundW(OpenDialog1->FileName.c_str(), SND_SYNC);

Так работает . Спасибо !

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)