Проблема с созданием чата

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Аватара пользователя
Oleg_Rus
Сообщения: 335
Зарегистрирован: 16 окт 2006, 09:56
Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
Контактная информация:

Доброго всем времени суток.

Изначально стояла задача создать чат в Delphi. В интернете наткнулся на статью, где приведен листинг аналогичной программы. Проблема в том, что листинг немного неверный (или может это я ничего не понимаю), но не могу найти некоторых свойств.

Код: Выделить всё

Для работы этого кода, на форме должно лежать:

tlistbox-1шт.с именем mes
tbutton-4шт. с именами button1,button2,button3 и button4
tedit-4шт. c именами edit1,edit2,edit3 и edit4
tserversocket-1шт.с именем server
tclientsocket-1шт.с именем client

unit unit1;

interface

uses
windows, messages, sysutils, variants, classes, graphics, controls,   forms,
dialogs,wininet, stdctrls, scktcomp, psock, nmstrm;

type
t form1 = class(tform)
button1: tbutton;
button2: tbutton;
edit1: tedit;
client: tclientsocket;
server: tserversocket;
button3: tbutton;
edit2: tedit;
label1: tlabel;
edit3: tedit;
label2: tlabel;
edit4: tedit;
label3: tlabel;
mes: tlistbox;
button4: tbutton;
procedure button1click(sender: tobject);
procedure button2click(sender: tobject);
procedure serverclientread(sender: tobject; socket: tcustomwinsocket);
procedure button3click(sender: tobject);
procedure button4click(sender: tobject);
private
{ private declarations }
public
{ public declarations }
end;

var
 form1: tform1;
a:integer;
implementation

{$r *.dfm}

  procedure tform1.button3click(sender: tobject);{Код для кнопки активации сервера}
begin
server.port:=strtoint(edit2.text);{Порт для прослушивания}
server.active:=true;{Активация прослушивания порта}
end;

 procedure tform1.button1click(sender: tobject);{Код для кнопки коннекта}
begin
client.port:=strtoint(edit2.text);{Порт для подключения}
client.address:=edit3.text;{ip-адрес}
client.host:=edit4.text;{Имя Компа}
client.active:=true;{Подключение}
a:=0;
showmessage('Ура! Подключились!');
end;

 procedure tform1.button2click(sender: tobject);{Код для кнопки отправки сообщения}
begin
[B]client.socket.sendtext[/B](edit1.text);{Отправка}
mes.items.strings[a]:=edit1.text;{Пишем этот текст у себя}
a:=a+1;
edit1.text:='';
end;

 procedure tform1.[B]serverclientread[/B](sender: tobject;
socket: tcustomwinsocket);{Эта функция вызывается при получении сообщения}
begin
mes.items.strings[a]:='> '+socket.receivetext;{Записываем}
a:=a+1;
end;



    procedure tform1.button4click(sender: tobject);{Код кнопки очистки ЛистБокса}
begin
mes.items.clear;
a:=0;
end;

 end.
Проблемы возникают в процедуре tform1.button2click - нет свойства Socket, в процедуре tform1.serverclientread - что это за событие и как его найти и client.host - что это вообще такое???
я не смог найти TClientSocket и TServerSocket и заменил их на TcpClient и TcpServer аналогично. Подскажите, пожалуйста, как можно обойти эти моменты. Заранее всем спасибо.
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Я предложил бы не TCP протокол использовать, а сокеты - tclientsoclet и tserversocket - два компонента на форму и два поля Мемо.

А по поводу примера - у дельфи есть в папке Demo - Internet пример с использованием TCP
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Аватара пользователя
Oleg_Rus
Сообщения: 335
Зарегистрирован: 16 окт 2006, 09:56
Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
Контактная информация:

спс, Dr_Grizzly
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
Ответить