Auf "Connected" zu prüfen ist nicht sinnvoll: diese Funktion gibt immer True zurück, wenn im Inputpuffer noch Daten stehen.
Eine
AV (
Access Violation) muss nicht geworfen werden, sondern eine (Unterklasse von) IdException.
IdTCPClient.IOHandler.ReadTimeout zu setzen ist nicht notwendig, da IdTCPClient.ReadTimeout das schon macht.
Und das Sleep(5000) könnte man auch weglassen, und stattdessen ReadLn mit einem Timeout-Parameter aufrufen:
http://stackoverflow.com/questions/1...n-with-timeout