Delphi ist irgendwann dazwischen von RichEdit v1 auf RichEdit v3 umgestiegen, also bei dem gekapselten Windows-Control.
Erstmal hat sich da an den APIs bissl was geändert und intern arbeitet das RichEdit auch teilweise etwas Anderes.
In V1 werden #13#10 als Zeilenumbruch verwendet und nun halt nur noch #13 , aber Delphi pfuscht da teilweise (die haben das nie komplett umgesetzt, obwohl ich das schon vor Ewigkeiten gemeldet hatte) an den Strings rum und ersetzt beim Auslesen die #13 durch #13#10.
GetTextLen gibt also die Länge mit den "verpfuschten" #13#10 aus, aber die direkten
API-Zugriffe, sowie SelStart und SelLength (das haben die Trottel vergessen), geben die Positionen/Längen/Texte mit #13 aus.
v4.1 welche oftmals auch v5 genannt wird, ist es auch schon wieder viele Jahre alt, aber da ist Delphi zum Glück sehr langsam, mit dem Upgrade.
https://msdn.microsoft.com/en-us/lib.../bb787873.aspx