4

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

Memo1.Text := Memo1.Text + sReceivedChars;

这很好用,但我认为它效率很低,必须先获取现有文本,然后再连接我的几个字符,然后再写回去。我真的很想要一个“SendChars()”函数或类似的东西。有没有更好的方法在现有文本的末尾简单地添加几个字符?

4

2 回答 2

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;
于 2010-08-26T23:07:14.270 回答
2

如果您的文本不止一行(TStrings集合的字符串是LinesTMemo 属性的实际类型),那么您可以这样做:

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

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

于 2010-08-27T03:26:50.353 回答