procedure TForm1.Memo1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var str,S1,S2: string; arr,A1,A2: TArray<string>; i: Integer; begin str := Memo1.SelText; if not str.Contains(sLineBreak) then begin Beep; Exit; end; arr := str.Split([sLineBreak+sLineBreak]); if Length(arr) <> 2 then begin Beep; Exit; end; S1 := arr[0].Trim; S2 := arr[1].Trim; A1 := S1.Split([sLineBreak]); A2 := S2.Split([sLineBreak]); if Length(A1) <> Length(A2) then begin Beep; Exit; end; for i := 0 to Length(A1) - 1 do begin A1[i] := A1[i] + sLineBreak + A2[i]; end; str := string.Join(sLineBreak+sLineBreak, A1); Memo1.SelText := str; end;