Странная ошибка, возвращаемая mciSendString. Кто-нибудь может помочь?

Несколько месяцев назад я добавил аудиозапись в приложение MFC, над которым работаю. Это оказалось достаточно просто, и через час или два код заработал на моем ПК и на паре тестовых машин клиентов (одна с XP, другая с Vista). Однако недавно одна из их тестовых машин была модернизирована, и теперь функция записи отказывается работать.

Основной код для начала записи: ..

mcierr=mciSendString("open new type waveaudio alias mysound",tmpstr,80,NULL);
mcierr=mciSendString("set mysound time format ms bitspersample 8 samplespersec 11025",tmpstr,80,NULL);
mcierr=mciSendString("record mysound",tmpstr,80,NULL);

который, кажется, работает нормально. Для остановки записи выполняется следующий код..

mcierr=mciSendString("stop mysound",tmpstr,80,NULL);
mcierr=mciSendString("save mysound C:\\filename.wav",tmpstr,80,NULL);   
mcierr=mciSendString("close mysound",tmpstr,80,NULL);

При отправке инструкции «сохранить mysound C:\filename.wav» возникает следующая ошибка. Возвращается ошибка..

MCI Error A parameter or value was specified twice.  Only specify it once.

Но я не вижу никакой ошибки в том, что отправляю, и эта ошибка не имеет смысла. Возможно ли, что ошибка связана с тем, что программа пытается записать в формате, который ПК не поддерживает?

Спасибо за ваше время

Ян


person IanW    schedule 13.03.2009    source источник
comment
Дал мне подсказку о проблеме, которая у меня была. Спасибо!   -  person    schedule 12.05.2009


Ответы (2)


ОК, мне удалось найти решение этой проблемы. Эта строка в коде..

mcierr=mciSendString("save mysound C:\\filename.wav",tmpstr,80,NULL); 

отлично работает на моем компьютере для разработки под управлением XP, но вызывает ошибки на некоторых тестовых компьютерах под управлением XP и на всех из них под управлением Vista. Однако ошибка исчезает, если само имя файла заключено в такие кавычки.

mcierr=mciSendString("save mysound "C:\\filename.wav"",tmpstr,80,NULL);

Теперь код работает нормально на всех компьютерах XP и Vista, на которых он был протестирован.

Ян

person IanW    schedule 17.04.2009

Детали больше необходимы, чтобы заставить его работать. Пожалуйста, обратите внимание на двойной "" до и после имени файла:

mcierr=mciSendString("save mysound ""C:\\filename.wav""",tmpstr,80,NULL);

Это тоже хорошо:

mcierr=mciSendString(@"save mysound ""C:\filename.wav""",tmpstr,80,NULL);

С этими двойными кавычками код теперь работает на моей Windows 7.

person Jo Obb    schedule 02.01.2013