Noch eine Idee, aber ich weiß nicht ob alle Delphi Versionen das mitmachen,
deine Text-Datei einfach per ReadLn() einlesen, da ist automatisch schluss, egal wie die zeichenfolge ist.
also im BeginUpdate modus per schleife alles in deine memobox laden, dann passts.
Bei bedarf memo-box inhalt zurück auf platte schreiben, dann ist format einheitlich egal wie's vorher war.
Ihhh.
TStringList: Lesen tut die Alles (LoadFromXyz und .Text) und geschreiben wird, was in TStringList.LineBreak steht.
Aber TMemo ersetzt auch alles, gleich beim Zuweisen an .Text
PS:
AdjustLineBreaks
Und das sucht übrigens auch doppelt und bytweise.
* einmal um die Länge des Ergebnisses zu berechnen
* und dann nochmal inkl. Umkopieren
Denn das Suchen und nur eine Speicherreservierung ist wesentlich schneller, als mehrere Reservierungen+umkopieren während der Suche.
Ach ja, ich hatte mir mal eine Ersetzenklasse geschrieben, welche die Operationen sammelt, in einem statischen Array und dann zusammen ausführt, wenn der Puffer voll oder die Arbeit beendet ist.
Muß man auch nur einmal suchen, aber bearbeitet nicht jeden Schritt einzeln.