Странная ошибка, возвращаемая из mciSendString - Может кто-нибудь помочь? - PullRequest
0 голосов
/ 13 марта 2009

Несколько месяцев назад я добавил аудиозапись в приложение 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);

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

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

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

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

Ian

Ответы [ 2 ]

0 голосов
/ 02 января 2013

Более подробная информация необходима, чтобы она работала. Пожалуйста, смотрите двойной "" до и после имени файла:

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

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

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

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

0 голосов
/ 17 апреля 2009

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

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, на которых он был протестирован.

Ian

...