我想在運行時創建一個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