So I wonder if it is a bug. Shall I report it?
No it's not a bug.
It's documented that TRichMemo.Lines.Add
should add the linebreak because when if it doesn't, the following Lines.Add would put everything on the same line.
So it's not a bug. It's normal that you have a new line at the bottom (so users can put the cursor there to begin typing a new line).
It's just that you didn't want that new line (which doesn't happen often).
The only thing that could be considered a bug is how the TStringList (the TRichMemo.Lines) is transported back to TRichMemo itself. It doesn't adhere to the TStringList.SkipLastLineBreak := true and always puts a linebreak at the end... unless you directly use the TRichMemo.Lines.Text property.