Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Чат на делфи 6

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Чат на делфи 6
Имя
Сообщение << Старые топики   Новые топики >>
Чат на делфи 6 - 2009-03-04 20:25:26.210000   
Мимо_шел

Сообщений: 11
Оценки: 0
Присоединился: 2008-12-20 16:08:44.566666
Здравствуйте.
Перейду сразу к делу. Как можно сделать так, чтобы при соединение клиента к серверу, имя юзера заносилось в список пользавателей( в компанент memo).
Вот собственно сам листинг клиента:

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ScktComp; type TClientForm = class(TForm) Client: TClientSocket; Ipedit: TEdit; GO: TButton; NameEdit: TEdit; Log: TMemo; MsgEdit: TEdit; Send: TButton; memo1: TMemo; procedure GOClick(Sender: TObject); procedure SendClick(Sender: TObject); procedure ClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure MsgEditKeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; var ClientForm: TClientForm; Ip:String; //обьявление переменных Msg:String; Name:String; mes:string; e:integer; sendname:string;//переменная для передачи имени в компанент мемо implementation {$R *.dfm} procedure TClientForm.GOClick(Sender: TObject); begin Ip:=ipedit.Text; //тут я думаю все ясно Client.Host:=ip; Client.Active:=true; sendname:=nameedit.Text; //имя пользователя равно имени введенного в неймэдит Client.Socket.SendText(sendname+':');//передача текста (имени) end; procedure TClientForm.SendClick(Sender: TObject); begin Msg:=Msgedit.Text; name:=nameedit.Text; client.Socket.SendText(name+': '+Msg); msgedit.text:=''; end; procedure TClientForm.ClientRead(Sender: TObject; Socket: TCustomWinSocket); begin mes:=socket.ReceiveText; Log.Lines.add(mes);//добавление полученного сообщения в мемо (это работает) sendname:=socket.ReceiveText;//тут я пытался проделать тоже, что и с переменой mes memo1.Lines.Add(sendname); //но не получилось) end; procedure TClientForm.MsgEditKeyPress(Sender: TObject; var Key: Char); begin case key of chr(13):send.click(); end; end; end. Ну и листинг сервака в дагонку: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ScktComp; type TServerForm = class(TForm) server: TServerSocket; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure serverClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure serverAccept(Sender: TObject; Socket: TCustomWinSocket); private { Private declarations } public { Public declarations } end; var ServerForm: TServerForm; Mes:string; I:integer; implementation {$R *.dfm} procedure TServerForm.Button1Click(Sender: TObject); begin Server.Active:=true; end; procedure TServerForm.Button2Click(Sender: TObject); begin Server.Active:=false; end; procedure TServerForm.serverClientRead(Sender: TObject; Socket: TCustomWinSocket); begin Mes:=Socket.ReceiveText; for I:= 0 to Server.Socket.ActiveConnections -1 do begin Server.Socket.Connections[i].SendText(mes) ; end; end; procedure TServerForm.serverAccept(Sender: TObject; Socket: TCustomWinSocket); begin end; end. P.s. сорре за столь длинный пост[&:]

//Используйте тег [c ode]
//FriLL
Post #: 1
RE: Чат на делфи 6 - 2009-03-04 20:38:15.680000   
unconnected2

Сообщений: 332
Оценки: 0
Присоединился: 2009-01-16 17:56:12.400000
procedure TClientForm.ClientRead(Sender: TObject; Socket: TCustomWinSocket); begin [b]mes:=socket.ReceiveText; [/b] Log.Lines.add(mes);//добавление полученного сообщения в мемо (это работает) [b]sendname:=socket.ReceiveText;//тут я пытался проделать тоже, что и с переменой mes [/b] memo1.Lines.Add(sendname); //но не получилось) end;
зачем два раза присваивать? Просто memo1.Lines.Add(mes);, там же одно и то же
Post #: 2
RE: Чат на делфи 6 - 2009-03-04 22:48:42.003333   
Мимо_шел

Сообщений: 11
Оценки: 0
Присоединился: 2008-12-20 16:08:44.566666
я не два раза присвоил.и там разные)))
Post #: 3
RE: Чат на делфи 6 - 2009-03-04 22:53:19.056666   
unconnected2

Сообщений: 332
Оценки: 0
Присоединился: 2009-01-16 17:56:12.400000
Да что ты:) Ты хоть понял, что это за событие вообще, а? Или по принципу типа : сначала шлю имя, присваиваю его одной переменной, потом шлю фамилию, присваиваю его другой, да?
Post #: 4
RE: Чат на делфи 6 - 2009-03-04 22:56:50.923333   
Мимо_шел

Сообщений: 11
Оценки: 0
Присоединился: 2008-12-20 16:08:44.566666
хм.. я не понел..поподробней.)тогда)
Post #: 5
RE: Чат на делфи 6 - 2009-03-04 23:00:59.480000   
unconnected2

Сообщений: 332
Оценки: 0
Присоединился: 2009-01-16 17:56:12.400000
clientread - это когда клиенту присылают пакет. Прислали - сохранили в переменную не отходя от кассы - обработали. Всё. Зачем второй раз читать то же самое?
Post #: 6
RE: Чат на делфи 6 - 2009-03-04 23:42:34.793333   
Мимо_шел

Сообщений: 11
Оценки: 0
Присоединился: 2008-12-20 16:08:44.566666
Да я тебя понял), он дабавляет логин в поле memo1, но как сделать чтобы другой пользователь тоже видел того кто вошел в чат,а тот кто вошел в чат видел того кто уже сидит там?))
Post #: 7
RE: Чат на делфи 6 - 2009-03-05 22:10:51.110000   
unconnected2

Сообщений: 332
Оценки: 0
Присоединился: 2009-01-16 17:56:12.400000
Блин люди вы поиском пользоваться умеете? В интернете туча примеров чатов на Delphi. И передачу файлов можно прикрутить при желании. И когда заходишь на сервер - все это видят. Зачем идти на форум если ещё поиском не умеешь пользоваться? [риторически]

http://www.google.ru/search?hl=ru&q=%D1%87%D0%B0%D1%82+%D0%BD%D0%B0+%D1%81%D0%BE%D0%BA%D0%B5%D1%82%D0%B0%D1%85+delphi&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=f&oq=

Панацея.
Post #: 8
RE: Чат на делфи 6 - 2009-03-14 06:07:16.396666   
HolyAnimal =^.^=

Сообщений: 88
Оценки: 0
Присоединился: 2009-02-28 01:26:28.003333
Вот мну помнитсо, я тож как-то типо такого чата для универа делал -_^
Но вот злой дяденька админ, со своими ограничениями на фсе, подпортил жизнь чату Т_Т
Чата не было, но початиться очень хотелось… Т_Т
У нас еше диск один был расшаренный на все компы, вот и пришла ко мне одна бредовая идея Т_Т
Ни каких те сокетов… тупо один клиент и текстовый файл -_^
Думаю принцип его работы ужо уловили -_^
Но можно было, даже назначить админов/модеров, с возможностью выбрасывания из чата и выключения компа (типо бан) ^_^
И довольно таки шустро работал!!! о_О Потом есчо, от нефиг деланья на парах, скины припаял к нему… ^_^

Понимаю, скажите, что ето за извращения, но… ведь початиться получилось! -_^
Post #: 9
RE: Чат на делфи 6 - 2009-03-19 15:13:27.350000   
Мимо_шел

Сообщений: 11
Оценки: 0
Присоединился: 2008-12-20 16:08:44.566666
Выложи что тсталось (если вообще чтото отсалось)?) интересно посмотреть)
Post #: 10
RE: Чат на делфи 6 - 2009-03-19 15:39:49.600000   
unconnected2

Сообщений: 332
Оценки: 0
Присоединился: 2009-01-16 17:56:12.400000
HolyAnimal =^.^=, невероятно но факт, у нас находчивая молодежь по локалке точно такое же придумала.. Т.е. при отправке сообщения оно записывается в файл, и другой клиент его читает. правда реализация не очень была)
Post #: 11
RE: Чат на делфи 6 - 2009-03-19 15:42:22.956666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Бедный винт на сервере ;)
Post #: 12
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Чат на делфи 6







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.