Lazarus и открытие аудиофайлов

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
vadv55
новенький
Сообщения: 27
Зарегистрирован: 16.01.2014 14:08:12

Lazarus и открытие аудиофайлов

Сообщение vadv55 »

При попытке открыть в консольной программе Lazarus аудиофайла .wav с помощью оператора Reset на экран выдаётся следующее сообщение:
Проект ... вызвал класс исключения 'RunError(2)'
В то же время, если удалить заголовочную часть wav-файла (первые 40 байтов), то он успешно открывается и обрабатывается. Чем вызвано подобное поведение программы в среде Lazarus, ведь в других средах такого обычно не происходит? Заранее благодарю за любой совет по данному поводу.
SSerge
энтузиаст
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Сообщение SSerge »

Пример проблемного кода, пожалуйста, приведите.
Аватара пользователя
hinst
энтузиаст
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Сообщение hinst »

Если задача в том чтобы просто проигрывать аудиофайлы (а не написать декодер а также перенаправитель на устройство вывода самому с нуля в каких-нибудь учебных целях) то вот рекомендую попробовать:
"United Open-libraries of Sound" для FreePascal
http://fredvs.github.io/uos/
vadv55
новенький
Сообщения: 27
Зарегистрирован: 16.01.2014 14:08:12

Сообщение vadv55 »

Спасибо за ответы. Пример проблемного кода:

var
F: File;
buf: Char;

{$R *.res}

begin
AssignFile(F,'zvuk0.wav');
Reset(F,1);
Seek(F,45);
BlockRead(F,buf,1);
. . .
CloseFile(F)
end.

Задача состоит в анализе и обработке данных аудиофайлов.
SSerge
энтузиаст
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Сообщение SSerge »

А у вас там атрибут read only случайно на файлах не стоит? :roll:

А то у freepascal есть такая подлость: режим открытия нетипизированных файлов зависит от содержимого константы filemode. По умолчанию, оно 2, что соответствует режиму read/write. Соответственно, если файл read only, подобное открытие завершается через exception. Нужно перед открытием filemode присвоить режим read only, imho это ноль.
vadv55
новенький
Сообщения: 27
Зарегистрирован: 16.01.2014 14:08:12

Сообщение vadv55 »

Большое спасибо за ответ. При проверке оказалось, что значение переменной FileMode никак не влияет на открытие wav-файла, и тем не менее, после ряда переименований, он наконец-то стал открываться. Поэтому, скорее всего, wav-файл нельзя было открыть вследствие системного сбоя при сортировке файлов в домашнем каталоге, и его заголовок здесь совершенно ни при чём.
Ответить