Вы не правильно StringReplace используете, зачем каждый раз при вводе символа в мемо её дёргать, когда достаточно выполнить всего один раз, перед шифровкой в процедуре Button1Click. Лишняя нагрузка
Или, что лучше, уберите совсем мемочейнж и добавьте такую процедуру
Код:
procedure TForm1.IshMemoKeyPress(Sender: TObject; var Key: Char);
begin
if Key = 'ё' then key:= 'е';
if Key = 'Ё' then key:= 'Е';
end;