Das wurde ganz am Anfang mehrfach ausführlich erklärt.
Der Comport, genauso wie bei
TCP, bekommt am Ziel die Daten nicht genauso "partitioniert" rein, wie sie auf der anderen Seite versendet wurden.
Also mußt du selber unvollständige Daten sammeln und die empfangenen Daten auch selber (an den Zeilenumbrüchen) aufteilen.
ReadText weiß ja nicht wieviele Daten du lesen weillst, also liest es alles aus, was sich aktuell im Empfangspuffer befindet. (das können mehrere Zeilen und auch nur der Anfang der "letzen" Zeile sein)