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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2011, 11:34   #1
cargo29
Форумчанин
 
Регистрация: 13.12.2010
Сообщений: 603
По умолчанию Кодировка потока

Библиотека басс, получаю данные с потоком радио

Код:
Label3.Caption:=strpas(BASS_ChannelGetTags(s, BASS_TAG_HTTP));
но когда русские буквы идут с потоком, тогда отображаются какие то символы разные, как это можно исправить????
cargo29 вне форума Ответить с цитированием
Старый 05.05.2011, 14:54   #2
Exception
Пользователь
 
Регистрация: 31.12.2007
Сообщений: 37
По умолчанию

Результат от BASS_ChannelGetTags пропусти через Utf8ToAnsi.
Exception вне форума Ответить с цитированием
Старый 05.05.2011, 15:49   #3
cargo29
Форумчанин
 
Регистрация: 13.12.2010
Сообщений: 603
По умолчанию

Цитата:
Сообщение от Exception Посмотреть сообщение
Результат от BASS_ChannelGetTags пропусти через Utf8ToAnsi.
пробовал все так же.... (((
cargo29 вне форума Ответить с цитированием
Старый 06.05.2011, 12:17   #4
Exception
Пользователь
 
Регистрация: 31.12.2007
Сообщений: 37
По умолчанию

Ну если ты используешь версию Delphi, где по умолчанию типы данных переведены в Юникод, то обозначай в секции var как и положены типы, например, заместо PChar - PAnsiChar, заместо String - AnsiString (А вслучае BASS_ChannelGetTags обозначь как UTF8String для меньшей путаницы). Также если используется "юникодная" версия, то тут корректнее использовать функцию Utf8Decode для преобразования сразу к WideString. Ты же проверял в других плеерах отображение тэгов потока? Если там все корректно значит недочет у тебя. В противном случае скинь ссылку на сетевое радио сюда для проверки.
Exception вне форума Ответить с цитированием
Старый 07.05.2011, 17:54   #5
cargo29
Форумчанин
 
Регистрация: 13.12.2010
Сообщений: 603
По умолчанию

Цитата:
Сообщение от Exception Посмотреть сообщение
Ну если ты используешь версию Delphi, где по умолчанию типы данных переведены в Юникод, то обозначай в секции var как и положены типы, например, заместо PChar - PAnsiChar, заместо String - AnsiString (А вслучае BASS_ChannelGetTags обозначь как UTF8String для меньшей путаницы). Также если используется "юникодная" версия, то тут корректнее использовать функцию Utf8Decode для преобразования сразу к WideString. Ты же проверял в других плеерах отображение тэгов потока? Если там все корректно значит недочет у тебя. В противном случае скинь ссылку на сетевое радио сюда для проверки.
хорошо щас попробую все это что описали, в демке радио не русское поэтому текст идет на англ. щас проверю сразу отпишу

Utf8Decode
UTF8String
AnsiString

я правильно делал???

Код:
Label3.Caption:=ansistring(BASS_ChannelGetTags(s, BASS_TAG_HTTP));
Label3.Caption:=UTF8String(BASS_ChannelGetTags(s, BASS_TAG_HTTP));
Label3.Caption:=UTF8Decode(BASS_ChannelGetTags(s, BASS_TAG_HTTP));
вот проект сам посмотри радио расположено на 5 форме!
http://zalil.ru/30995284

Делфи 2010

Последний раз редактировалось Stilet; 17.06.2011 в 15:44.
cargo29 вне форума Ответить с цитированием
Старый 11.05.2011, 15:41   #6
Exception
Пользователь
 
Регистрация: 31.12.2007
Сообщений: 37
По умолчанию

Цитата:
Сообщение от cargo29 Посмотреть сообщение
Utf8Decode
UTF8String
AnsiString

я правильно делал???

Код:
Label3.Caption:=ansistring(BASS_ChannelGetTags(s, BASS_TAG_HTTP));
Label3.Caption:=UTF8String(BASS_ChannelGetTags(s, BASS_TAG_HTTP));
Label3.Caption:=UTF8Decode(BASS_ChannelGetTags(s, BASS_TAG_HTTP));
вот проект сам посмотри радио расположено на 5 форме!
http://zalil.ru/30995284
Извиняюсь за столь долгий ответ. В данный момент нет возможности вообще проверить работоспособность кода. Если не ошибаюсь, в Delphi 2010 ввели новый тип юникод строк - UnicodeString или типа того. Так вот и VCL автоматически поддерживает юникод здесь. Соответственно надо что-то типа такого...
Код:
var
  pszMeta: LPTSTR;
  pszText: UnicodeString;//WideString
begin
  pszMeta := BASS_ChannelGetTags(s, BASS_TAG_HTTP);
  pszText := UTF8Decode(pszMeta);
  Label3.Caption := pszText;
end;
Exception вне форума Ответить с цитированием
Старый 14.05.2011, 11:24   #7
cargo29
Форумчанин
 
Регистрация: 13.12.2010
Сообщений: 603
По умолчанию

Нет ошибка выскакивает вот скрин
Изображения
Тип файла: jpg 5465.JPG (92.8 Кб, 158 просмотров)
cargo29 вне форума Ответить с цитированием
Старый 14.05.2011, 14:27   #8
Exception
Пользователь
 
Регистрация: 31.12.2007
Сообщений: 37
По умолчанию

А сами не понимаете что за ошибка? В заголовочном файле басс поменяйте соответственно результат BASS_ChannelGetTags с PChar на PAnsiChar как минимум (он рассчитан на предыдущие неюникодовые версии). И приучивайте себя использовать строгое приведение типов - вместо String используйте AnsiString, вместо Char - AnsiChar, PChar - LPTSTR. А то понаделаете по неопытности тупые ошибки и трудно их будет найти.
Exception вне форума Ответить с цитированием
Старый 29.05.2011, 10:18   #9
cargo29
Форумчанин
 
Регистрация: 13.12.2010
Сообщений: 603
По умолчанию

Исправил но щас отображает одни вопросы

с Pansichar не запускается
Изображения
Тип файла: jpg Безымянный.JPG (155.6 Кб, 124 просмотров)

Последний раз редактировалось Stilet; 17.06.2011 в 15:45.
cargo29 вне форума Ответить с цитированием
Старый 29.05.2011, 11:30   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
PChar - LPTSTR.
о да, зашибись строго.
LPSTR или же LPWSTR
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать номер потока из самого потока? GaMeSTeR Помощь студентам 0 03.12.2010 09:50
Создание потока GoldP Win Api 0 14.05.2010 21:28
Два потока tigrend Общие вопросы .NET 6 24.04.2010 08:25
Создание потока Хохол Общие вопросы .NET 0 21.11.2009 16:44