Delphi: динамически создавать TClientSocket - PullRequest
3 голосов
/ 19 октября 2010

Я пытаюсь создать TClientsocket во время выполнения, но не могу назначить события.

Я использую

var
  cs:TCLIENTSOCKET;

procedure OnReadx;
begin

end;

procedure intsok;
begin
  cs:=Tclientsocket.create(nil);
  cs.OnRead:=OnReadx;
end;

Это не работает.Как правильно это сделать?

Ответы [ 2 ]

4 голосов
/ 19 октября 2010

и событие объявляется так

TSocketNotifyEvent = procedure (Sender: TObject; Socket: TCustomWinSocket) of object;

так что вы написали функцию с этими параметрами, например

procedure OnReadx(Sender: TObject; Socket: TCustomWinSocket);

и присвойте его как в вашем коде:

cs.OnRead:=OnReadx;

С наилучшими пожеланиями,

3 голосов
/ 19 октября 2010

Проблема в том, что класс TClientSocket требует, чтобы обработчики событий для его различных событий были указателями на методы (они должны принадлежать некоторому объекту), в отличие от обычных процедур.

Решено!

...