A quick and simple way to limit typed text:
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: char);
begin
if (Length(Memo1.Text) >= 150) and (key <> #08) then
key := #0
end;
While cursor and delete keys work when blocked, backspace (#08) does not so I added a check for it too.
This however is far from perfect and some more work is required; the problem is that you can paste text at will. To use this properly, you should either disable pasting or check what is being pasted...