Похоже, когда вы пытаетесь получить рейтинг от mp3 в TagLib и его было открыто, что приведет к нарушению прав доступа на чтение:библиотека теги Qt чтения нарушения доступа
Вот мой код:
QFile fileInfo(file);
fileInfo.open(QIODevice::ReadOnly);
if(fileInfo.isReadable())
{
TagLib::MPEG::File mpeg(file.toStdString().c_str());
bool isRead = mpeg.isReadable(file.toStdString().c_str());
if(isRead)
rating = dynamic_cast<TagLib::ID3v2::PopularimeterFrame *>(mpeg.ID3v2Tag()->frameList("POPM").front())->rating();
}
Я попытался добавить попытку/уловку, но она все еще терпит неудачу. Я пробовал QLockFile без успеха. Есть ли способ проверить, имеет ли файл исключительные права на файл или поймать нарушение доступа к чтению?
Update Благодаря наконечнику я изменил мой код, чтобы проверить наличие недопустимых значений первых:
if(mpeg.ID3v2Tag() != 0)
{
if(dynamic_cast<TagLib::ID3v2::PopularimeterFrame *>(mpeg.ID3v2Tag()->frameList("POPM").front()) != 0)
{
rating = dynamic_cast<TagLib::ID3v2::PopularimeterFrame *>(mpeg.ID3v2Tag()->frameList("POPM").front())->rating();
}
}
Что такое хороший способ разделить это. Когда я сначала пытаюсь использовать TagLib :: ID3v2 :: Tag * id3v2 = mpeg.ID3v2Tag(); Я получаю id3v2 uneclared identifier – adviner
Странно, это выглядит верным для меня, если 'Tag' является допустимым типом в пространстве имен' TagLib :: ID3v2' –