Delphi VCL TMemo加速字符串读取


本文整理自网络,侵删。

 
在Delphi的VCL中使用TMemo读取大量字符串时,您编写的代码通常如下。

procedure StringToMemo(AMemo:TMemo;AString:String); // Memo1复制ASTRING到
begin
  AMemo.Lines.BeginUpdate;
  AMemo.Lines.Text:=ASring;
  AMemo.Lines.EndUpdate;
end;
另外,当通过TStringList传递一个巨大的字符串时:

procedure StringToMemo(AMemo:TMemo;AString:String); //复制ASTRING到Memo1
var
  lSL:TStringList;
begin
  lSL:=TStringList.Create;
  lSL.Text:=AString;
  AMemo.Lines.Assign(lSL);
  lSL.Free;
end;
通过Assign传递时,不需要BeginUpdate / EndUpdate。在“分配”代码中使用。

但是,如果传递给TMemo的字符串变大,它将变慢。
当我在网上搜索时,我发现当我使用TMemo的LoadFromFile传递文本文件时,它以高速显示。在那种情况下,我认为我应该使用LoadFromStream传递字符串。
所以我考虑了以下代码。

procedure StringToMemo(AMemo:TMemo;AString:String); // Memo1要复制ASTRING
var
  lStrStream: TStringStream;
begin
  lStrStream:=TStringStream.Create(Astring);
  AMemo.Lines.LoadFromStream(lStrStream);
  lStrStream.Free;
end;

LoadFromStream也不需要BeginUpdate / EndUpdate。
现在,即使是VCL TMemo也可以高速读取大量字符串。

相关阅读 >>

Delphi webbrowser ie 窗口选择中,选中的文字内容

Delphi 窗体不可用

Delphi编程之win10桌面图标设置

Delphi截取字符串 防止中文截断

Delphi键盘按键伪码多类型

Delphi vcl 在trichedit控件中设置wordwrap属性后无法自动换行的问题

Delphi firemonkey 绘图

Delphi debug权限提升

Delphi替换字符串中的单引号

Delphi 判断是否为空('none', 'null', '')

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...