2012-04-13 10 views
0

Mein Code erstellt mehrere TidTCPClients und fügt dann in einer TThreadList Referenzen zu ihnen hinzu.Senden von Befehlen an eine Liste von TidTCPClients

Ich hatte gehofft, Befehle an alle von ihnen bis dahin

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

(das ist natürlich nur ein kleiner Teil des Codes) mit senden.

aber ich bin immer zwei Fehler:
[DCC Error] Client.pas (261): E2149-Klasse nicht über eine Standardeigenschaft
[DCC Error] Client.pas (262): E2233 Property ‚IOHandler "Unzugänglich hier

und nach einer kurzen Lektüre von This Ich bin nicht weiser wie das zu tun, aber auf jeden Fall beginnen zu denken, dass ich völlig auf dem falschen Weg bin.

Kann mir jemand in die richtige Richtung zeigen?

+2

See [doc] (http://docwiki.embarcadero.com/VCL/en/Classes.TThreadList) wie 'TThreadList' zu betreiben. LockList und UnlockList sowie wie die Objekte in der Liste TidTCPClient adressiert werden (Liste [I]). IOHandler. –

Antwort

3

Siehe doc wie man arbeitet TThreadList. Sie müssen auch die Objekte TidTCPClient in die Liste schreiben, da sie nur nicht typisierte Zeiger enthält.

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 (Beat mich dazu. ) Eine bessere Verbindung zu den Dokumenten könnte stattdessen das [TThreadList-Codebeispiel] (http://docwiki.embarcadero.com/CodeExamples/XE2/en/TThreadList_%28Delphi%29) sein, obwohl. –

+0

Danke, ich habe genau das anhand deines Kommentars getippt! –