有没有更好的方法向TMemo添加几个字符?

时间:2010-08-26 22:48:08

标签: delphi character tmemo

我正在使用TMemo来保存来自串口的接收字符以供查看。当他们到达时我正在做:

Memo1.Text := Memo1.Text + sReceivedChars;

这样可以正常工作,但我认为这是相当低效的,必须在连接我的几个字符然后再写回来之前获取现有文本。我真的很喜欢'SendChars()'函数或类似的东西。是否有更好的方法可以在现有文本的末尾添加几个字符?

2 个答案:

答案 0 :(得分:8)

我不知道你是否认为这是值得的,但你可以这样做:

procedure TForm1.Button1Click(Sender: TObject);
var
  index: Integer;
  NewText: string;
begin
  NewText := 'Append This';
  index := GetWindowTextLength (Memo1.Handle);
  SendMessage(Memo1.Handle, EM_SETSEL, index, index);
  SendMessage (Memo1.Handle, EM_REPLACESEL, 0, Integer(@NewText[1]));
end;

答案 1 :(得分:2)

如果您的文本在多行中(TStrings集合的字符串是TMemo的Lines属性的实际类型),那么您可以这样做:

Memo1.Lines[Memo1.Lines.Count - 1] := Memo1.Lines[Memo1.Lines.Count - 1] + sReceivedChars;

因此,您将一些字符添加到备忘录的最后一行(字符串集合中的最后一个字符串),而不将整个文本放入单个字符串中。