2012-04-13 79 views
0

我的代碼創建了多個TidTCPClients,然後在TThreadList中添加對它們的引用。將命令發送到TidTCPClients列表

我希望通過然後使用

for I := 0 to (NumClients - 1) do 
begin 
    ClientList[I].IOHandler.WriteLn('Whatever'); 
end; 

將命令發送到所有的人(這顯然只是代碼的一小部分)。

但是我得到兩個錯誤:
[DCC錯誤] Client.pas(261):E2149類不具有默認屬性
[DCC錯誤] Client.pas(262):E2233住宅「IOHandler '這裏無法訪問

並在簡短閱讀This之後,我對如何做到這一點並不明智,但絕對開始認爲我完全處於錯誤的軌道。

任何人都可以指向正確的方向嗎?

+2

請參閱[doc](http://docwiki.embarcadero.com/VCL/en/Classes.TThreadList)如何操作TThreadList。 LockList和UnlockList以及如何解決列表TidTCPClient(列表[I])中的對象。IOHandler。 – 2012-04-13 22:40:08

回答

3

請參閱doc如何操作TThreadList。您還需要在列表中輸入TidTCPClient對象,因爲它只包含無類型的指針。

var 
    list: TList; 
... 
list := ClientList.LockList; 
try 
    for I := 0 to list.Count - 1 do 
    begin 
    TidTCPClient(list[I]).IOHandler.WriteLn('Whatever'); 
    end; 
finally 
    ClientList.UnlockList; 
end; 
+1

+1(打我吧)更好的鏈接到文檔可能是[TThreadList代碼示例](http://docwiki.embarcadero.com/CodeExamples/XE2/en/TThreadList_%28Delphi%29),而不是,雖然。 – 2012-04-13 22:48:14

+0

謝謝,我只是根據您的評論輸入完整的內容! – 2012-04-13 22:53:25