OK, this shows the flicker. It's quite long because it includes the code for taking care of the unwanted line endings. It also has some code to support backspacing which is unnecessary for this test since the random character generator won't create a backspace.
The memo should be created with a vertical scroll bar. I set the timer interval to 200 so it didn't take too long to fill up the space in the memo...
var
addcr: boolean;
procedure AddText( memo: TMemo; s: string );
var
i: integer;
txt: string;
bksp: boolean;
begin
txt := memo.Text;
i := Length(txt);
if (i > 0) and not addcr then
while (i > 0) and (txt[i]<#32) do
begin
Delete(txt,i,1);
Dec(i);
end;
if Length(s) > 0 then
begin
addcr := (s[1] = #13) or (s[1] = #10);
bksp := s[1] = #8;
end;
if bksp then
Delete(txt,Length(txt),1)
else
txt := txt + s;
memo.Text := txt;
memo.SelStart := Length(txt);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
c: integer;
s: string;
begin
c := Random(30);
if c > 25 then s := ' ' else s := Chr(Ord('a')+c);
AddText(Memo1,s)
end;