Не работает чат delphi

1 лайк

как сделать чтобы WriteLog вводила в мемо

procedure WriteLog(Value:string);
begin
Form1.Memo1.LineAdd(Value);
end;

Вам надо разобраться с областью видимости переменных.

Посмотрел ваш код. Ух жесть.
У вас куча форм куча серверов и у всех один и тот же адрес!
А ещё у вас в коде события Server_OnClick и Server_OffClick не назначены на кнопки.

1 лайк

Да один адрес, но разные порты. Раньше назначены были потом удалил. У меня все переменные глобальные, так проще пользоваться, а отдельный юнит зачем?

У вас несколько форм, у каждой формы свой юнит. В принципе на серверном коде у вас так и сделано два юнита и один инди сервер и этот юнит подкючев в первый. А на клиентском коде тоже два юните и не связаны и на каждой форме по инди-серверу правда в коде один закомментированы.
Соответственно подумал что у вас проблемы в этом месте.
Тем более это могла быть одна из причин почему у вас с memo не получалось.

unit Unit2;
...
uses unit1; // если не подключить, то будет ошибка.
...
procedure WriteLog(Value:string);
begin
unit1.Form1.Memo1.LineAdd(Value);
end;

А вообще лучше пишите, что пробовали сделать и что не получилось. Тогда мне и другим будет проще вам ответить.

1 лайк

думал на счет тсп сервера:
но он выдает такую ошибку:
image
ввожу свой внешний айпи адрес

был вариант с TSP server однако выло хуже чем UDP вариант с TSP server тоже выложил

Чем хуже-то? Наоборот лучше, сразу сам вывел ошибку о том, что не удалось подключиться.

Почему?

1 лайк

Ну потому, что удалось перемещения нормально все работало и все удавалось. А на TSP так и не удалось нечего дельного сделать.

Ну потому что на TSP до того как я начал программировать его были большие надежды чем на UDP

Так а IP-то почему внешний?
Чтобы с ним работало нужно как минимум настроить port forwarding на роутере, не зависимо от протокола.

что ж удавалось если

1 лайк

После перенесения на флешку, и добавления фтп сервера все сбилось.

вот что пишет если вводить локальный адрес
image

Сервер и клиент на разных компах?
Может быть например фаервол блокирует.
Или просто не тот IP или порт.

1 лайк

На одном но в последствии планируется на разные.

Приведите код в порядок и приложите сюда последнюю версию.

1 лайк

это что именно?
пробуйте 127.0.0.1 для начала.

1 лайк

image

Это означает что соединение было откланено. Либо фаервол вас не пустил либо сервер небыл запущен.

Нормально если адресс поменять на 127.0.0.1 то у меня соединяется.

Это вам инди сообщает что вы уже соединились с сервером.
Сделать проверку на повторное нажатие кнопки.

if not IdTCPClient1.Connected then
  begin
  IdTCPClient1.Connect('127.0.0.1');
  end;

Или так:

if not IdTCPClient1.Connected then
  begin
  IdTCPClient1.Connect('127.0.0.1');
  end else
  begin
  IdTCPClient1.Disconnect;
  IdTCPClient1.Connect('127.0.0.1');
  end;
1 лайк

5 сообщений были перенесены в новую тему: Как отослать от сервера, клиенту сообщение? (Indy TCP)