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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2013, 11:07   #1
Oleg_SS
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 75
По умолчанию Перекодировка в INDY на XE5

Доброе время суток.
Перешел на XE5. До этого работал на XE2.
Для передачи данных по сети использую INDY.
В частности есть строка:

Код:
AContext.Connection.IOHandler.Write('Строка', TEncoding.UTF8);
XE5 ругается на нее:

E2250 There is no overloaded version of 'Write' that can be called with these arguments

В документации написано, что теперь надо использовать TIdTextEncoding.
Но на нее тоже ругается.
Как теперь перекодировать строку в UTF8?

Заранее спасибо!
Oleg_SS вне форума Ответить с цитированием
Старый 15.11.2013, 12:33   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А какова спецификация этого метода?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2013, 07:28   #3
Oleg_SS
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А какова спецификация этого метода?
Метод кодируем записываемые данные в любую кодировку. В частности мне надо в UTF8.
Oleg_SS вне форума Ответить с цитированием
Старый 17.11.2013, 11:11   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ты не понял )
Я спрашивал какие параметры функция принимает.
Вот ты эту строку откуда взял? Если заглянуть в Хелп инди 10 там нет такого.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2013, 12:24   #5
Oleg_SS
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ты не понял )
Я спрашивал какие параметры функция принимает.
Вот ты эту строку откуда взял? Если заглянуть в Хелп инди 10 там нет такого.
Если про метод Write, то он используется так:
TIdIOHandler.Write Method (string, TIdTextEncoding)
это из HELP на XE5

Если про метод TIdTextEncoding.UTF8
TIdTextEncoding.UTF8 Method
это тоже написано в HELP

Проблема в том, что ругается:
E2003 Undeclared identifier: 'TIdTextEncoding'

Использую Uses IDGlobal;
Oleg_SS вне форума Ответить с цитированием
Старый 17.11.2013, 14:11   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
это тоже написано в HELP
Значит там прочти в каком модуле этот класс, и добавь модуль в uses.
P.S. А что за версия Индейки?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2013, 15:21   #7
Oleg_SS
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Значит там прочти в каком модуле этот класс, и добавь модуль в uses.
P.S. А что за версия Индейки?
Там написано, что в модуле IDGlobal

Это не помогает.
Вполне допускаю, что делаю что то не так.
Поэтому и спрашиваю, как осуществить кодировку при передачи данных на Delphi XE5 ?
Именно на XE5, так как на XE2 все работает.
Oleg_SS вне форума Ответить с цитированием
Старый 17.11.2013, 16:27   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Значит опять версия Инди была круто переработана. Соболезную, я уже ее не использую, и у меня в хелпе по И10 такого метода нет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.11.2013, 04:56   #9
Oleg_SS
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Значит опять версия Инди была круто переработана. Соболезную, я уже ее не использую, и у меня в хелпе по И10 такого метода нет.
Дык они так и пишут, что для удобства переделали метод Write
Раньше его можно было использовать так:
Write(String, TEncoding);
Тперь надо использовать так:
Write(String, TIdTextEncoding);

Это один из способов. Метод конечно же перегружен и его можно использовать так:
Write(String);

Но ни как не соображу (плохо ориентируюсь в кодировках и строках), как мне строку перекодировать из Unicode в UTF8? Ведь String всегда в Unicode.
Oleg_SS вне форума Ответить с цитированием
Старый 18.11.2013, 12:09   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
Write(TEncoding.UTF8.GetString(BytesOf(Тут строка))
Как вариант.

Кстати а откуда ноги у твоей проблемы растут? Зачем перекодировка нужна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Embarcadero Delphi XE5 novicepro Общие вопросы Delphi 2 02.11.2013 19:11
Delphi XE5 +Android приложения furstenberg Общие вопросы Delphi 4 30.10.2013 11:09
Indy в Delphi XE5 (Android Dev) ZuBy Работа с сетью в Delphi 4 30.09.2013 13:45
Непонятная ситуация с IdUDPServer1 в XE5 Mars2107 Общие вопросы Delphi 3 19.09.2013 15:08
Delphi xe5 хранение настроек на android saragosa Общие вопросы Delphi 2 17.09.2013 13:18