Hallo,
TMemo bildet einen Text exakt wie vorgegeben ab. Enthaltene Zeilentrenner (!) werden bei der Zählung genau beachtet. Der Text 'two'#13#10'lines' führt erwartungsgemäß zu einer Zeilenzahl 2, wird doch der Text vor und nach dem Windows-Zeilentrenner #13#10 (sLineBreak) auf zwei Zeilen verteilt.
Ein Sonderfall liegt beim Text 'one line'#13#10 vor. Die Zählung liefert den Wert 1, obwohl man argumentieren könnte, dass dem Zeilentrenner ein leerer String folgt und deshalb zwei Zeilen vorliegen. Hier haben die
VCL-Entwickler entschieden, dass ein leerer String sich nicht als letzte Zeile qualifizieren kann. Damit wird sicher gestellt, dass die Zeilenzählung auch bei Verwendung von Lines.Add() ein erwartungsgemäßes Ergebnis liefert.
Das alles funktioniert auch bei zwischenzeitlichem Speichern.
Grüße vom marabu