我正在使用TMemo来保存来自串口的接收字符以供查看。当他们到达时我正在做:
Memo1.Text := Memo1.Text + sReceivedChars;
这样可以正常工作,但我认为这是相当低效的,必须在连接我的几个字符然后再写回来之前获取现有文本。我真的很喜欢'SendChars()'函数或类似的东西。是否有更好的方法可以在现有文本的末尾添加几个字符?
答案 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;
因此,您将一些字符添加到备忘录的最后一行(字符串集合中的最后一个字符串),而不将整个文本放入单个字符串中。