Du darfst nicht Pos nehmen, sondern "solltest" die SuchFunktion (Find) des RichEdits verwenden, da sie im internen Speicher sucht, ohne diese fahrlässige Manipulation von Delphi.
Embarcadero war bei deiner Implementation extrem doof und wandelt den intenen Zeilenumbruch #10 des RichEdits in #13#10 um, aber nicht beim Zugriff aus SelStart und SelLength.
Und trotz mehrerer
QC-Einträge wird das seit vielen, vielen, vielen Jahren nicht repariert.
Oder du mußt den ausgelesenen Text wieder zurückumwandeln, also #13#10 > #10.