Delphi:动态创建TClientSocket

3

我正在尝试在运行时创建一个TClientsocket,但我无法分配事件。

我使用

var
  cs:TCLIENTSOCKET;

procedure OnReadx;
begin

end;

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

它不起作用。正确的做法是什么?

2个回答

4

并且这个事件是这样声明的:

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

所以您已经编写了一个带有这些参数的函数,例如

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

并且像您的代码一样进行分配:

cs.OnRead:=OnReadx;

最好的问候,


1
真的,我不明白为什么有人会给一个好答案打-1分。如果我的所有问题都得到-1分也无所谓,但在你得到-1分之前应该存在一个机制来提供原因。opc0de,希望这个答案对你有帮助 ;) - RBA
我投了反对票,当我正在撰写评论以解释为什么我不喜欢这个答案时,我仔细阅读了答案并意识到答案并不像我最初想的那样过分,因此我在时间限制内收回了我的投票,所以没有可见的记录。你可以自己看看。不过,我不会投赞成票,因为它没有提到子程序需要是一个方法而不是一个独立的过程。 - Rob Kennedy

3
问题在于TClientSocket类要求其各种事件的事件处理程序必须是方法指针(它们必须属于某个对象),而不是常规过程。
问题已解决!

1
你会发现这对于所有类的事件属性都是适用的,而不仅仅是TClientSocket的。 - Rob Kennedy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接