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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2010, 15:20   #1
ZBEP
Форумчанин
 
Аватар для ZBEP
 
Регистрация: 23.03.2009
Сообщений: 334
По умолчанию Кодировка в ibIRC (indy 10)

Здравствуйте искал как решить данную проблему, но не нашел, встречал похожие случаи но не с idIRC.
В общем делаю так:
Отправляю на сервер сообщение.
Код:
IdIRC1.raw('SAY Русский текст');
Сервер отвечает:
Цитата:
User: ??????? ?????
Как решить эту проблему в idIRC ?

Еще, если серверу отправляют русское сообщение не через мою программу, то у меня это отображается так:
Сообщение "Русский текст" выглядет так:
Цитата:
User: P QQQP:P8P9 QP5P:QQ

Последний раз редактировалось ZBEP; 27.10.2010 в 15:26.
ZBEP вне форума Ответить с цитированием
Старый 27.10.2010, 15:28   #2
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

http://www.programmersforum.ru/showthread.php?t=58785
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 27.10.2010, 15:37   #3
ZBEP
Форумчанин
 
Аватар для ZBEP
 
Регистрация: 23.03.2009
Сообщений: 334
По умолчанию

Цитата:
Сообщение от BARNEY Посмотреть сообщение
Читал, но так и не получилось отправить сообщение с помощью tStream, если не трудно, можете написать простой пример отправки для idIRC ?
ZBEP вне форума Ответить с цитированием
Старый 27.10.2010, 15:49   #4
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

http://programmersforum.ru/showthread.php?t=59035

если не разберетесь сделаю завтро
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 27.10.2010, 16:25   #5
ZBEP
Форумчанин
 
Аватар для ZBEP
 
Регистрация: 23.03.2009
Сообщений: 334
По умолчанию

BARNEY, спасибо.
Попытался сделать, как там написано, но при попытке отправить сообщение, сразу рвется соединение (сокет ерор #10054) и приходится заново коннектиться.

Код:
var s:TStringStream;
begin
s:=TStringStream.Create;
s.WriteString('SAY '+edit5.Text);
s.Position:=0;
IdIRC1.IOHandler.Write(s, s.Size, true);
П.с.
Как я понял, он создает поток с сообщением, и после отправки - закрывает его.
Но мне необходимо через уже установленное, беспрерывное соединение - отправлять/принимать сообщения, как в примере с использованием RAW.

Последний раз редактировалось ZBEP; 27.10.2010 в 16:35.
ZBEP вне форума Ответить с цитированием
Старый 27.10.2010, 21:16   #6
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

А со стороны сервера так делал?

Код:
s:=TStringStream.Create;  //Инициализация потока s
	AContext.Connection.IOHandler.ReadStream(s); //Чтение из контекста в поток
	s.Position:=0;  //Установка позиция на начало потока s
	Memo1.Lines.Add(s.ReadString(s.Size)); //Запись принятого сообщения в Memo
	s.Free;  //Уничтожение потока s
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 27.10.2010, 21:22   #7
ZBEP
Форумчанин
 
Аватар для ZBEP
 
Регистрация: 23.03.2009
Сообщений: 334
По умолчанию

BARNEY, сервер не мой и доступ к исходникам не возможен.
Но сам по себе сервер русские сиволы воспринимает, но не известно каким образом.
Может будет полезно то, что отправленное русское сообщение на серв, в моей программе отображается как:
Цитата:
User: P QQQP:P8P9 QP5P:QQ

Последний раз редактировалось ZBEP; 28.10.2010 в 00:15.
ZBEP вне форума Ответить с цитированием
Старый 28.10.2010, 07:18   #8
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

Код:
var s:TStringStream;
begin
s:=TStringStream.Create;
s.WriteString('SAY '+edit5.Text);
s.Position:=0;
IdIRC1.IOHandler.Write(s, s.Size, true);
s.free
он на КАЖДОЕ сообщение создает потом и отправляет...

на прием поставьте

Код:
s:=TStringStream.Create;  //Инициализация потока s
	AContext.Connection.IOHandler.ReadStream(s); //Чтение из контекста в поток
	s.Position:=0;  //Установка позиция на начало потока s
	Memo1.Lines.Add(s.ReadString(s.Size)); //Запись принятого сообщения в Memo
	s.Free;  //Уничтожение потока s
а не проще попробовать на своём сервере, а не с наскока штурмовать другие?
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 28.10.2010, 13:13   #9
ZBEP
Форумчанин
 
Аватар для ZBEP
 
Регистрация: 23.03.2009
Сообщений: 334
По умолчанию

BARNEY, не, свой сервер не получится сделать, можно сказать, что необходимо реализовать программу клиента, для стороннего IRC сервера, все уже готово, с английскими сообщениями все нормально, но вот с русскими, никак не получается

И нельзя как-нибудь реализовать, отправку в уже установленном "потоке", просто если делать, так, то происходит отключение, и у меня через try .. except происходит пере подключение к серверу, а из-за "особенностей" ConnClosedGracefully, приходится полностью удалять idIRC, IdIOHandlerStack и заново создавать. Ну и в общем сервер не может понять сообщения отправленные таким образом.

Последний раз редактировалось ZBEP; 28.10.2010 в 13:25.
ZBEP вне форума Ответить с цитированием
Старый 31.10.2010, 00:58   #10
ZBEP
Форумчанин
 
Аватар для ZBEP
 
Регистрация: 23.03.2009
Сообщений: 334
По умолчанию

А если рассмотреть вариант с отправкой путем перевода в HEX и обратно?
К примеру если отслать серверу:
"абвг" через его программу "клиент", то в HEX это выглядит так:
Код:
D0 B0 D0 B1 D0 B2 D0 B3 D0 B4
А в моей программе это отображается как:
Цитата:
P0P1P2P3P4
Я понимаю, что можно при отправке и посылке каждую букву проверять и менять ее на нужное HEX значение, но может можно сделать как-то по другому?
ZBEP вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кодировка в INDY 10 (как бороться с "???") Shadow_Hawk Компоненты Delphi 7 03.02.2022 16:17
как обновить indy 9 на indy 10 Пилигрим Компоненты Delphi 16 30.04.2010 10:11
В Indy не поддерживается кодировка GragDen Работа с сетью в Delphi 5 08.02.2009 06:49
Кодировка Anny Общие вопросы по Java, Java SE, Kotlin 1 16.01.2009 13:02
Indy 9 против Indy 10 OrdJONY Свободное общение 2 08.11.2008 20:28