Чего-то я вообще смысла этого всего не поняла. У вас получится строка, в которой содержимое MessageEdit'а будет повторяться столько раз, сколько строк в Memo. К чему это дублирование?
В целом, код рабочий, насколько я могу судить. Вот только я переписала бы это так:
Код:
procedure TraLaLa;
var
i: Integer;
Msg : string;
begin
Msg := '';
for i := 0 to MessageEdit.Lines.Count - 1 do
Msg := Msg + #13#10 + StrPas(MessageEdit.Lines.GetText);
end;
Если, конечно, Msg имеет тип string...