TCustomWinSocket.ReceiveText
Mit jedem Aufruf dieser Methode wird alles bisher empfangene dir zurück gegeben und der Empfangspuffer entsprechend geleert. Damit ergibt sich beim darauffolgenden Aufruf innerhalb deiner Zeile, dass der Rückgabewert höchstwahrscheinlich leer ist, da er noch nichts neues empfangen hat.
Das ganze ist so natürlich recht dumm für dich, aber wir können das umstellen, nur dann bräuchte ich eine Idee von dir woher ich wissen kann wann ich dir alte Daten zurück gebe und wann neue? Also alle 4 Aufrufe immer die zuletzt empfangenen Daten? Oder immer alle Daten? Oder niemals die empfangenen Daten löschen? Dann ist die Frage, ob es dir noch Spass macht mit einer 200 MB Stringvariablen zu arbeiten nach dem dein Chat mal 4 Stunden lief...