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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2011, 19:58   #1
me-worker
Новичок
Джуниор
 
Регистрация: 23.07.2011
Сообщений: 8
По умолчанию Delphi и Winamp - в плагине некорректно передаются строки

Здравствуйте. пишу input-плагин к Winamp и столкнулся со следующей проблемой - необходимо передать 2 строки: description - описание плагина и FileExtensions - расширение файлов, которые обрабатываются плагином. заметил, что плагин не срабатывает на заявленное расширение, заглянул в список плагинов в Winamp и увидел, что из строки передался только первый символ.

строка описания имеет тип PChar

description: PChar;

изощрялся всеми методами, которые знал - и напрямую присваивал стринг, и через приведение типов, и создавал переменную типа PChar, выделял ей память, заполнял, но безуспешно: из методов плагина значение переменной desctiption видно полностью, а в самом винампе - только первый символ.

соответственно, я сделал вывод, что файлы моего типа не обрабатываются плагином, потому что строка не передалась корректно.

подскажите, пожалуйста, в чем может быть дело? спасибо
me-worker вне форума Ответить с цитированием
Старый 23.07.2011, 20:11   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а вы кодировку то учли?
раньше String=AnsiString, а сейчас то String=UnicodeString.
соответственно вам наверно надо PAnsiChar?(PAnsiChar(AnsiString(str )))
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.07.2011, 00:00   #3
me-worker
Новичок
Джуниор
 
Регистрация: 23.07.2011
Сообщений: 8
По умолчанию

очень Вам благодарен - я полдня убил на шаманство по этой проблеме. подскажите, пожалуйста, а то, что мне Winamp отдает (в шаблоне плагина - тип Pchar) - это тоже нужно обрабатывать как PAnsiChar? когда я так делаю, то получаю пустой результат, а когда работаю с ним как с PChar, то один символ, причем всегда одинаковый
me-worker вне форума Ответить с цитированием
Старый 24.07.2011, 01:38   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

надо как PAnsiChar, а работаете то с этим типом верно?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.07.2011, 11:03   #5
me-worker
Новичок
Джуниор
 
Регистрация: 23.07.2011
Сообщений: 8
По умолчанию

пытаюсь преобразовываю в AnsiString, но получаю пустоту.

function Play_(fn: PAnsiChar): integer;
var p: AnsiString;
begin
p := AnsiString(fn);
ShowMessage(p); // получаю пустую строку
Result := 0;
end;

перепробовал много преобразований, некоторые по информации из интернета, некоторые наобум, но добивался только одного из трех результатов - пустая строка, один символ (всегда одинаковый - А), вылет винампа
me-worker вне форума Ответить с цитированием
Старый 25.07.2011, 14:07   #6
me-worker
Новичок
Джуниор
 
Регистрация: 23.07.2011
Сообщений: 8
По умолчанию

Пепел Феникса
подскажите, пожалуйста, правильно ли я выполняю преобразование?
me-worker вне форума Ответить с цитированием
Старый 25.07.2011, 19:00   #7
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Код:
const
 dsc : PAnsiChar = 'winamp input plugin';

 description := dsc;
должно не вызвать проблем, я так делал когда плагины для sonique писал
там тоже PAnsiChar, писал на Delphi XE
ZuBy вне форума Ответить с цитированием
Старый 25.07.2011, 19:32   #8
me-worker
Новичок
Джуниор
 
Регистрация: 23.07.2011
Сообщений: 8
По умолчанию

ZuBy
благодарю, с этим Феникс помог разобраться. проблема теперь в интерпретации того, что дает Винамп. он должен бы отдать имя файла в функции Play - аргумент fn, но я не могу понять, что ко мне приходит и в каком формате
me-worker вне форума Ответить с цитированием
Старый 25.07.2011, 19:55   #9
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

мне кажется у тебя неправильная функция, или она дает неправильный код.. так сказал винни-пух.
Вроде число дать должно
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Старый 25.07.2011, 20:03   #10
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

покажи как ты передаешь данные в функцию Play
ZuBy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в дефли в функцию передаются объекты (классы) TwiX Общие вопросы Delphi 5 13.12.2010 23:17
Плавающее окно Winamp KWN, lnc Мультимедиа в Delphi 9 20.11.2010 17:53
PHP и winamp Zazu PHP 16 25.08.2010 22:56
Прога некорректно работает Delphi Morraks91 Помощь студентам 8 19.05.2010 18:16
тест на php+mysql. не передаются значения переменных Liana4271 Помощь студентам 2 14.06.2009 01:28