私には地獄を混乱させるエラーがあります。次のコードは、TidTCPClientからTidTCPServerに行を送信します。初めて実行すると、完全に動作します。 2回目は実行され、その後は毎回、すべての文字列の先頭に改行が追加されます。私は何が欠けていますか?私はあなたのクライアントコードの潜在的な問題を参照してくださいIndy TCP通信と改行
procedure TClientForm.ButtonSendStringClick(Sender: TObject);
var
I: integer;
List: TList;
begin
List := ClientList.LockList;
try
for I := 0 to (List.Count- 1) do
begin
TidTCPClient(List[I]).IOHandler.WriteLn('Hello'+'|x|');
end;
finally
ClientList.UnlockList;
end;
Edit1.Text := '';
end;
procedure TClientForm.IdTCPServer1Execute(AContext: TIdContext);
var
LLine: string;
begin
LLine := Acontext.Connection.IOHandler.ReadLn('|x|');
OutputDebugString(PChar(LLine));
end;
なぜ送信者コードでスレッドセーフリストを使用しているのですか?それは私にとって意味をなさない。 – whosrdaddy
クライアントインスタンスの未知数(コンパイル時)が以前に作成され、これによりそれぞれがクライアントリストに文字列が送信されます。 –