При попытке открыть в консольной программе Lazarus аудиофайла .wav с помощью оператора Reset на экран выдаётся следующее сообщение:
Проект ... вызвал класс исключения 'RunError(2)'
В то же время, если удалить заголовочную часть wav-файла (первые 40 байтов), то он успешно открывается и обрабатывается. Чем вызвано подобное поведение программы в среде Lazarus, ведь в других средах такого обычно не происходит? Заранее благодарю за любой совет по данному поводу.
Lazarus и открытие аудиофайлов
Модератор: Модераторы
Пример проблемного кода, пожалуйста, приведите.
Если задача в том чтобы просто проигрывать аудиофайлы (а не написать декодер а также перенаправитель на устройство вывода самому с нуля в каких-нибудь учебных целях) то вот рекомендую попробовать:
"United Open-libraries of Sound" для FreePascal
http://fredvs.github.io/uos/
"United Open-libraries of Sound" для FreePascal
http://fredvs.github.io/uos/
Спасибо за ответы. Пример проблемного кода:
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.
Задача состоит в анализе и обработке данных аудиофайлов.
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.
Задача состоит в анализе и обработке данных аудиофайлов.
А у вас там атрибут read only случайно на файлах не стоит? 
А то у freepascal есть такая подлость: режим открытия нетипизированных файлов зависит от содержимого константы filemode. По умолчанию, оно 2, что соответствует режиму read/write. Соответственно, если файл read only, подобное открытие завершается через exception. Нужно перед открытием filemode присвоить режим read only, imho это ноль.
А то у freepascal есть такая подлость: режим открытия нетипизированных файлов зависит от содержимого константы filemode. По умолчанию, оно 2, что соответствует режиму read/write. Соответственно, если файл read only, подобное открытие завершается через exception. Нужно перед открытием filemode присвоить режим read only, imho это ноль.
Большое спасибо за ответ. При проверке оказалось, что значение переменной FileMode никак не влияет на открытие wav-файла, и тем не менее, после ряда переименований, он наконец-то стал открываться. Поэтому, скорее всего, wav-файл нельзя было открыть вследствие системного сбоя при сортировке файлов в домашнем каталоге, и его заголовок здесь совершенно ни при чём.
