Strings Delphi

Title: How to Insert a string at caret point (memo)
procedure TForm1.InsertText(str: string; Amemo: TMemo);
var
Str1: string;
i, ui: Integer;
begin
ui := Length(Amemo.Lines[Amemo.CaretPos.y]);
str1 := Amemo.Lines[Amemo.CaretPos.y];
if Pos('', str) 0 then
begin
i := Pos('', str);
str := StringReplace(str, '', '', [rfReplaceAll, rfIgnoreCase]);
i := i - 1 + ui;
end
else
i := -30;
Insert(str, Str1, Amemo.CaretPos.x + 1);
Amemo.Lines[Amemo.CaretPos.y] := str1;
if i -30 then
begin
Amemo.SelStart := Amemo.Perform(EM_LINEINDEX, Amemo.CaretPos.y, 0) + i;
Amemo.SetFocus;
end;
end;