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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2009, 17:33   #1
HTL
Пользователь
 
Регистрация: 30.03.2009
Сообщений: 77
По умолчанию Передать рус буквы

Как можно передать рус буквы серверу чтобы он их понял и написал в Чате русские буквы а не всякую хню???...
HTL вне форума Ответить с цитированием
Старый 29.07.2009, 18:50   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Кодировка Unicode. - символ = 2 байта, передаем.
BOBAH13 вне форума Ответить с цитированием
Старый 29.07.2009, 19:02   #3
HTL
Пользователь
 
Регистрация: 30.03.2009
Сообщений: 77
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Кодировка Unicode. - символ = 2 байта, передаем.
Исходник или код плиз...
HTL вне форума Ответить с цитированием
Старый 30.07.2009, 17:05   #4
RNT
Пользователь
 
Аватар для RNT
 
Регистрация: 15.09.2008
Сообщений: 59
По умолчанию

Надо использовать поток Stream .
Вот процедура , отправляющая сообщения:
Код:
procedure TForm1.BtnSendClick(Sender: TObject);
var
	s:TStringStream;
begin
	try
		tcpc1.Connect; //Соединение
		s:=TStringStream.Create; //Инициализация потока s
		s.WriteString(EditMsg.Text);  //Запись сообщения в поток s
		s.Position:=0; //Установка позиция на начало потока s
		tcpc1.IOHandler.Write(s, s.Size, true); //Передача сообщения
		Memo1.Lines.Add(EditMsg.Text); //Занесение отправленного сбщ. в окно чата
		s.Free; //Уничтожение потока s
		tcpc1.Disconnect; //Отсоединение
	except
		ShowMessage('Не получилось отправить !');
	end;
end;
Вот процедура , принимающая сообщения:
Код:
procedure TForm1.tcps1Execute(AContext: TIdContext);
var
	s:TStringStream;
begin
	s:=TStringStream.Create;  //Инициализация потока s
	AContext.Connection.IOHandler.ReadStream(s); //Чтение из контекста в поток
	s.Position:=0;  //Установка позиция на начало потока s
	Memo1.Lines.Add(s.ReadString(s.Size)); //Запись принятого сообщения в Memo
	s.Free;  //Уничтожение потока s
end;
Во вложении готовый чат (Delphi 2009)
Вложения
Тип файла: rar Stable 7.0.rar (23.0 Кб, 250 просмотров)
RNT вне форума Ответить с цитированием
Старый 02.03.2022, 10:40   #5
Shyub
Пользователь
 
Регистрация: 18.12.2013
Сообщений: 13
По умолчанию

А как это сделать в Indy10?
Со стороны клиента, видемо так (проверить не могу, т.к. не могу принять и передать поток на сервере):

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  S: String;
  ST:TStringStream;
begin
  ........................
  ........................
  ST:=TStringStream.Create; 
  try
    ST.WriteString(S);
    IdTCPClient1.Socket.Write(ST, ST.Size,true);
  except
    ........................
    ........................
  end;
  ST.Free;
end;
//---------------------------------------------
procedure TForm1.Timer1Timer(Sender: TObject);
var
  S: String;
  ST:TStringStream;
begin
  ST:=TStringStream.Create;
  IdTCPClient1.Socket.ReadStream(ST);
  S:=ST.ReadString(ST.Size);
  ST.Free;
  ........................
  ........................
end;
Как принимать поток ST сервером и как затем передать его клиену?
Shyub вне форума Ответить с цитированием
Старый 02.03.2022, 10:54   #6
Shyub
Пользователь
 
Регистрация: 18.12.2013
Сообщений: 13
По умолчанию

На стороне сервера попытался сделать так:
Код:
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
  S: String;
  n, k: Integer;
  ST:TStringStream;
begin
  ST:=TStringStream.Create; //Инициализация потока ST.
  AContext.Connection.IOHandler.ReadStream(ST);
  S:=ST.ReadString(ST.Size);
  ST.Free;
  .........................................
  .........................................
Сервер ничего не получает, а у клиента возникает вот такая ошибка:
1111.png
Shyub вне форума Ответить с цитированием
Старый 02.04.2022, 14:19   #7
KAPTOH
 
Регистрация: 04.03.2020
Сообщений: 6
По умолчанию

Код:
TStringStream.Create('',Tencoding.utf-8);
KAPTOH вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка рус/англ magistr_forever SQL, базы данных 1 18.07.2008 20:50
Передать файл клиенту BlackOmen JavaScript, Ajax 7 26.06.2008 11:36
Передать Канву Pedro Работа с сетью в Delphi 7 28.04.2008 17:38
Метод секущих +решение рус.яз для DEV C++ Толик Общие вопросы C/C++ 1 27.04.2008 15:00
передать переменную ar4i Общие вопросы Delphi 10 04.12.2006 14:30