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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2014, 17:00   #1
TUberwer
Форумчанин
 
Регистрация: 01.07.2013
Сообщений: 221
По умолчанию библиотеки raxp'a на XE5

Всем привет, раньше пользовался библиотеками raxp'a.
Теперь поставил Delphi XE5, и не могу ними воспользоваться..
Возьмем библиотеку GoogleSpeechRecognizeAPI3.При вызове функции recognize_flac во втором аргументе нужно указать на каком языке будет идти распознавание.

На Делфи 7 делал так и все работало на окей.

Код:
lan := pansichar(inlang.Text)  ;
 recognize_flac(text,
                lan,
                full_answer_google,
                recognize_flag,
                recognize_text,
                recognize_accuracy);
Но когда делаю так на Delphi XE5 , то распознает почему-то на английском и совсем не то что я говорю..

Код:
lan := pansichar(inlang.Text)  ;
 recognize_flac(text,
                lan,
                full_answer_google,
                recognize_flag,
                recognize_text,
                recognize_accuracy);
 Showmessage(recognize_text);
И в сообщении мне показывает какую-то фигню на английском.

И когда дело доходит до библиотеки YandexTranslateAPI , то появляется вот такая ошибка(ниже вложение)
Вызываю функцию из этой библиотеки так:
Код:
if LibHandle<>0 then begin
  translate:= LinkProc('translate');
translate(recognize_text,pansichar(tolang.Text),pansichar(inlang.Text),true);
Изображения
Тип файла: png Снимок.PNG (17.6 Кб, 69 просмотров)

Последний раз редактировалось TUberwer; 31.01.2014 в 17:04.
TUberwer вне форума Ответить с цитированием
Старый 31.01.2014, 17:07   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

насколько помню приведения к PAnsiChar идут через двойное преобразование:
Код:
PAnsiChar(AnsiString(Text))
попробуйте.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 31.01.2014, 17:27   #3
TUberwer
Форумчанин
 
Регистрация: 01.07.2013
Сообщений: 221
По умолчанию

Теперь сделал так
Код:
lan := PAnsiChar(AnsiString(inlang.Text));
 text:= PAnsiChar(AnsiString(Extractfilepath(paramstr(0))+'flac.flac'));
 showmessage(lan);
 showmessage(text);
 recognize_flac(text,
                lan,
                full_answer_google,
                recognize_flag,
                recognize_text,
                recognize_accuracy);
 Showmessage(recognize_text);
inland.text правильно показывает - ru
showmessage(text); тоже правильно показывает путь к файлу.
Но теперь на recognize_flac сразу ошибка та же выскакивет
TUberwer вне форума Ответить с цитированием
Старый 31.01.2014, 17:59   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Устроил личную переиску с raxp'ом на форуме, оригинально)
Человек_Борща вне форума Ответить с цитированием
Старый 31.01.2014, 18:08   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
И когда дело доходит до библиотеки YandexTranslateAPI , то появляется вот такая ошибка(ниже вложение)
Вызываю функцию из этой библиотеки так:

Код:
if LibHandle<>0 then begin
  translate:= LinkProc('translate');
translate(recognize_text,pansichar(tolang.Text),pansichar(inlang.Text),true);
мне начинает надоедать, что ваше нежелание ознакомиться с документацией сводится к многочисленному созданию тем к взыванию меня как духа в названии тем , что у вас там что-то не работает. Дело не в библиотеках raxp-а, а в том, что 'Описание API' пишется не просто так. Если сказано передавать в PAnsiChar(), значит и передавать надо именно в нем.

В XE5 для YandexTranslateAPI.DLL и GoogleTranslateAPI.DLL вызов и приведение типов данных свойств компонентов в XE5, как верно отметил Пепел Феникса, осуществляется следующим образом (старая демо из комплекта):
Код:
...

 if LibHandle <> 0 then FreeLibrary(LibHandle);
 if (sender as tbutton).tag = 0 then
  LibHandle:= LoadLibrary('YandexTranslateAPI.dll')
   else LibHandle:= LoadLibrary('GoogleTranslateAPI.dll');

 if LibHandle<>0 then begin
  translate:= LinkProc('translate');

  memo1.Lines.Add(translate(
   pansichar(AnsiString(memo2.Lines.GetText)),
   pansichar(AnsiString(tolang.Text)),
   pansichar(AnsiString(mylang.Text)),
   true))
 end
...
Все фурычит, как и положено. Что до GoogleSpeechRecognizeAPI3 проблема ваша же аналогично, по образу и подобию. Вникайте.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 31.01.2014 в 18:10.
raxp вне форума Ответить с цитированием
Старый 31.01.2014, 18:18   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Цитата:
мне начинает надоедать, что ваше нежелание ознакомиться с документацией сводится к многочисленному созданию тем к взыванию меня как духа в названии тем
Поставьте статус "Джин", будет Raxp Джин профессионал)
Человек_Борща вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi XE5 подгрузка библиотеки TUberwer Общие вопросы Delphi 9 31.01.2014 13:42
Delphi XE5 и iOS Simon1712 Общие вопросы Delphi 1 24.01.2014 09:50
Миграция Delphi2006 -> XE5 RGBvision Помощь студентам 0 20.12.2013 01:39
Перекодировка в INDY на XE5 Oleg_SS Работа с сетью в Delphi 15 25.11.2013 13:51
RAXP, с Днем Рождения! DIgorevich Свободное общение 25 05.09.2010 19:10