Oh, sorry, das habe ich übersehen, aber dann stimmt dein Code irgendwie nicht, du setzte die Ports für Server 1 und 2 (3 nicht), die Execute-Routinen sind aber für 2 und 3? Jetzt bin ich etwas verwirrt.
Was willst du eigentlich genau machen?
Falls du einen Server-Port "on the fly" umschalten willst, musst du auch die Bindings des Servers umschalten, die eventuell bereits bestehen:
Delphi-Quellcode:
IdTCPServer2.DefaultPort := 20;
for I := 0 to IdTCPServer2.Bindings.Count-1 do
begin
IdTCPServer2.Bindings[I].Port := IdTCPServer2.DefaultPort;
end;
IdTCPServer.Active := True;