Wenn das Readln in meinem Beispiel leere Zeilen zurückgibt, kannst Du die ja ausschließen mit if s<> '' then...
Ich ging davon aus, dass die Funktion erst zurückkehrt, wenn tatsächlich neue Daten gelesen wurden.
In Deinem Thread gibt es noch ein Problem: Du solltest nicht einfach aus dem Thread auf die Controls Memo1 und Edit10 zugreifen. Dafür war das Synchronize in meinem Beispiel da.
In Deinem Beispiel müsste das etwa so aussehen:
Delphi-Quellcode:
rec_str:= Form1.TCPClient.IOHandler.ReadLn();
Synchronize(
procedure
begin
Form1.Edit10.Text:= Form1.Edit10.Text +rec_str;
Form1.Memo1.Lines.Add(rec_str);
end);
Ich habe nicht ganz verstanden, was Du mit "bin ich zu schnell im Programm" meinst, aber vielleicht ist das damit ja gelöst