Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2010, 19:20   #1
fuss
 
Аватар для fuss
 
Регистрация: 01.05.2010
Сообщений: 6
Вопрос ID3v2 и Delphi 2010

Здравствуйте. Пишу аудиоплеер и столкнулся с такой проблемкой:
Delphi 2010 отказывается читать теги с мп3 файлов, либо выдаёт "кракозябы". Использую библиотеку BASS.DLL. Пробовал кучу вариантов - и BASS_ChannelGetTags(), и Tags.dll, и примеры приведённые на этом сайте, но результат один и тот же - "Кракозябы" или пустые значения. Может кто сталкивался с подобным, подскажите? Я где то читал что с дельфи 2009 нужно указывать флаг BASS_UNICODE, но я так и ненашёл куда его вставить. Искал в гугле, и на этом форуме, ничего по данной теме не нашёл.
fuss вне форума Ответить с цитированием
Старый 19.05.2010, 20:51   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

при инициализации баса надо его добавлять.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.05.2010, 20:57   #3
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

1. если ты внимательно смотрел то там везде используется PAnsiChar, а в Delphi 2009/2010 PWideChar, вот поэтому и неправильно считывается

2. вот так мы добавляем флаг
channel := bass_streamCreatefile(false, PChar(FileName), 0, 0, BASS_UNICODE);
ZuBy вне форума Ответить с цитированием
Старый 19.05.2010, 21:26   #4
fuss
 
Аватар для fuss
 
Регистрация: 01.05.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от ZuBy Посмотреть сообщение
1. если ты внимательно смотрел то там везде используется PAnsiChar, а в Delphi 2009/2010 PWideChar, вот поэтому и неправильно считывается

2. вот так мы добавляем флаг
channel := bass_streamCreatefile(false, PChar(FileName), 0, 0, BASS_UNICODE);
Не, это т оя знаю. Канал создаю именно так. Но когда вытягиваю теги всё равно получаю кракозябы. Вот процедура воспроизведения
Код:
procedure PlayerPlay(const FileName: string);
var
  FFileName: PChar;
Begin
    if not FileExists(FileName) then
    ShowMessage('Фаил не найден!');

    FFileName:=PChar(FileName);

    if Channel <> 0  then
    begin
      BASS_ChannelStop(Channel);
      BASS_StreamFree(Channel);
      Channel:=0;
    end;

    Channel:=BASS_StreamCreateFile(False, FFileName, 0,0,BASS_UNICODE);

    if channel=0 then
    begin
      ShowMessage('Ошибка загрузки файла');
      exit;
    end;

    if not (BASS_ChannelPlay(Channel, False)) then
      ShowMessage('Ошибка воспроизведения файла');

End;
а теги вытягиваю, по крайней мере пытаюсь, так
Код:
BASS_ChannelGetTags(Channel, BASS_TAG_ID3V2)
В итоге получаю китайские иероглифы
fuss вне форума Ответить с цитированием
Старый 19.05.2010, 21:39   #5
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

ну во первых ты так никогда не прочитаешь.
во вторых лучше найди модуль ID3v2.pas и используй его
или http://www.zubymplayer.com/blog/zuby_tags/2010-02-18-14
ZuBy вне форума Ответить с цитированием
Старый 19.05.2010, 21:53   #6
fuss
 
Аватар для fuss
 
Регистрация: 01.05.2010
Сообщений: 6
Хорошо

Цитата:
Сообщение от ZuBy Посмотреть сообщение
ну во первых ты так никогда не прочитаешь.
во вторых лучше найди модуль ID3v2.pas и используй его
или http://www.zubymplayer.com/blog/zuby_tags/2010-02-18-14
Большое спасибо! Ваша библиотека помогла)
А модуль ID3v2.pas я уже использовал - тож неподошёл.

Ещё раз спасибо)
fuss вне форума Ответить с цитированием
Старый 19.05.2010, 22:08   #7
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

fuss, обращайся помогу чем смогу
ZuBy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WinSock и Delphi 2010 Nicker Работа с сетью в Delphi 0 15.04.2010 21:09
Delphi 2010 Яр|/||< (^_^) Свободное общение 7 21.02.2010 17:02
Delphi 2010 beemoto Общие вопросы Delphi 6 22.09.2009 13:57
Работа с тэгом ID3v2 rush_13 Общие вопросы C/C++ 3 04.02.2007 12:12