Man kann das
if IdTCPClient1.Connected then ... weglassen, denn wenn der Verbindungsaufbau mit
IdTCPClient1.Connected scheitert, wird eine
Exception ausgelöst. Die Zeile mit der Abfrage auf Connected würde also nie erreicht.
Sicherheitshalber würde ich das Free in einem finally Block platzieren.
Dies gillt ebenfalls für die normale TClientSocket Komponente. Open() löst eine
Exception aus, fals die Verbindung fehlschlägt.
Ähm, warum nutzt du nicht einfach das Event
OnConnect dafür?
Ich bin mir ziemlich sicher, dass dieses Event nur für die non blocking Variante funktioniert und bei dieser benötigt man wieder zwingend eine Message Queue (und ein Window?).
Eine
kleine Bemerkung, die du unbedingt durchlesen solltest, falls du bei den Nativen Komponenten bleibst (TClientsocket/TServersocket).
Es kann sein, dass es diese Problem bei
Indy nicht gibt, da
Indy das selbst auch intern macht - kenn mich mit Indies ned so aus.
Pakettrennung muss sowohl bei
Indy, als auch bei den normalen Socket Komponenten per Hand implementiert werden.