IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Сокеты и консоль
сообщение
Сообщение #1


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Привет всем.

Животрепещущий вопрос: возможно ли в консоли присвоить событию сокета (OnRead, например) свою процедуру? Например, Client.onread:=myevent;. Описать её (myevent) получается, а вот присвоить правильно - нет..


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






По идее Event1 должен быть методом класса, поскольку в типе TSocketNotifyEvent есть указание:
type TSocketNotifyEvent = procedure (Sender: TObject; Socket: TCustomWinSocket) of object;

(2 слова в конце видишь? smile.gif )

Итого, решение тривиальное - обернуть всю работу с сокетом своим классом:
type
TFooClass = class(TObject)
server:TServersocket;
procedure Event1(Sender: TObject; Socket: TCustomWinSocket);
end;



Procedure TFooClass.Event1(Sender: TObject; Socket: TCustomWinSocket);
begin
writeln(socket.receivetext);
end;

var
obj: TFooClass;
begin
obj := TFooClass.Create;
with obj do begin
server:=TServerSocket.create(nil);
server.port:=1001;
server.OnClientRead:=event1;
server.ServerType := stNonBlocking;
server.Open;
while server.active do sleep(100);
end;
obj.Free;
end.
Можешь еще добавить try/finally, как положено, и создавать сокет в конструкторе класса TFooClass...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.05.2024 3:37
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name