r4587 should take care of Search() problem
I'd recommend to use
match := RichMemo1.Search('Line 200', 0, RichMemo1.GetTextLen, []);
Since length(RichMemo1.Text) causes the whole text (which could be large) to be copied from the Memo to memory and then discarded right away as soon as length is identified.
RichMemo1.GetTextLen - returns the length of the text without copying it to memory.