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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2008, 15:10   #1
Killbrum
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 206
По умолчанию Indy

Всем доброго времени суток! Помогите чуток с прогой как мне написать код чтоб клиент присоеденялся и считывал то что написано в РичЕдите и записывал в свой РичЕдит.
Вот вроде сервер написал...
Код:
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var s:string;
i:integer;
begin
for i := 0 to RE.Lines.Count - 1 do

s:=RE.Lines[i];
Write(s);
end;
А как клиент зделать?
Спасибо!
Killbrum вне форума Ответить с цитированием
Старый 23.09.2008, 15:39   #2
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

А вы с клиента какую нибудь команду посылаете для считывания этой ин-ии.
можно так попробовать: в клиенте
Код:
 form1.IdTCPClient1.WriteLn('Дай');
 memo1.Lines.Add(form1.IdTCPClient1.ReadLn());

Последний раз редактировалось SERG1980; 23.09.2008 в 15:54.
SERG1980 вне форума Ответить с цитированием
Старый 23.09.2008, 16:17   #3
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

лучше уж тогда отправлять и получать stream будет проще и меньше кода. В вашем случае надо ввести признак окончания передачи строк.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 23.09.2008, 20:40   #4
Killbrum
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 206
По умолчанию

Ну.... смотрите мне надо чтоб именно передалось "как оно есть". Тоисть смотрите я в Рич Едит ввел текст , отформатировал его, а после передаю по Инди и вывожу тотже форматированый текст в Рич Едит. Может подскажете как это лутше зделат? Знаю что вроде В РидЛН и ВрайтЛН надо ставить знаки окончания, а в просто Рид и Врайт ненадо. Может както с ними?
Killbrum вне форума Ответить с цитированием
Старый 25.09.2008, 23:13   #5
Killbrum
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 206
По умолчанию

никто не поможет?
Killbrum вне форума Ответить с цитированием
Старый 26.09.2008, 09:33   #6
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

1. можете передавать сам richedit как объект и потом его связывать с существующим но это достаточно сложная и ненадежная процедура
2. передавайте отдельно текст (проще, повторюсь, использовать при этом stream) и отдельно форматирование этого текста хоть в своем формате и на стороне клиента уже разгребать полученное
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 26.09.2008, 10:12   #7
Killbrum
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 206
По умолчанию

Вот мне помогли с примером. На Инди 9. Но у меня Делфи 2009 и туда Инди 9 нехочет ставится. Как мне это переделать под Инди 10?

Код:
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
  mem : TMemoryStream;
  BufSize : Integer;
begin
  mem := TMemoryStream.Create;
  try
    RichEdit1.Lines.SaveToStream(mem);
    mem.Position := 0;
    BufSize := mem.Size;
    AThread.Connection.WriteInteger(BufSize);
    AThread.Connection.WriteStream(mem);
  finally
    mem.Free;
  end;
  AThread.Connection.Disconnect;
end;
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  mem : TMemoryStream;
  BufSize : Integer;
begin
  IdTCPClient1.Host := '169.254.1.2';
  IdTCPClient1.Port := 12345;
  IdTCPClient1.Connect;
  mem := TMemoryStream.Create;
  try
    BufSize := IdTCPClient1.ReadInteger;
    IdTCPClient1.ReadStream(mem, BufSize);
    mem.Position := 0;
    RichEdit1.Lines.LoadFromStream(mem);
  finally
    mem.Free;
  end;
  IdTCPClient1.Disconnect;
end;
Как потоки заменить АКонтекст?
Killbrum вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как обновить indy 9 на indy 10 Пилигрим Компоненты Delphi 16 30.04.2010 10:11
Indy 9 против Indy 10 OrdJONY Свободное общение 2 08.11.2008 20:28
INdy + fpc Dmtr Паскаль, Turbo Pascal, PascalABC.NET 7 29.05.2008 00:03
indy v10 [Pr1_Zr4k] Компоненты Delphi 1 21.04.2008 21:42