我想在运行时创建一个TClientsocket但我不能分配事件。德尔福:动态创建TClientSocket
我用
var
cs:TCLIENTSOCKET;
procedure OnReadx;
begin
end;
procedure intsok;
begin
cs:=Tclientsocket.create(nil);
cs.OnRead:=OnReadx;
end;
它不工作。什么是正确的方式来做到这一点?
我想在运行时创建一个TClientsocket但我不能分配事件。德尔福:动态创建TClientSocket
我用
var
cs:TCLIENTSOCKET;
procedure OnReadx;
begin
end;
procedure intsok;
begin
cs:=Tclientsocket.create(nil);
cs.OnRead:=OnReadx;
end;
它不工作。什么是正确的方式来做到这一点?
,而该事件声明如下
TSocketNotifyEvent = procedure (Sender: TObject; Socket: TCustomWinSocket) of object;
所以你写的这些参数的函数,例如
procedure OnReadx(Sender: TObject; Socket: TCustomWinSocket);
,并分配它像在你的代码:
cs.OnRead:=OnReadx;
最好的问候,
问题是,TClientSocket类要求事件处理程序将其各种事件作为方法指针(它们必须属于某个对象),而不是常规过程。
解决了!
你会fin d对于所有类的事件属性都是如此,而不仅仅是TClientSocket的。 – 2010-10-19 20:33:37
真的,我不明白为什么有人为-1设置了一个很好的答案。如果我的所有问题都得到-1,并不重要,但它应该存在一个机制,在得到-1之前提供一个原因。 opc0de,希望答案帮助你;) – RBA 2010-10-19 15:33:00
我已经解决了它radu dar mersi;) – opc0de 2010-10-19 18:26:50
我投了这个下来,当我撰写评论,解释为什么我不喜欢这个答案,我更仔细地阅读答案并意识到答案并不像我原先想象的那么严重,所以我在限期内收回了我的选票,所以没有明显的投票记录。你自己看。但我不会投票,因为它没有提到子程序需要成为一种方法,而不是一个独立的程序。 – 2010-10-19 20:31:59