创业中的屌丝 发表于 2013-12-28 11:07:06

Delphi Memo 操作慢

有几M 东西 粘帖进 Memo组件里面去 好慢啊


还有 使用Memo1.Text:=String;

赋值大文本 更慢! 无奈了 求大神解决

创业中的屌丝 发表于 2013-12-28 11:18:50

比易语言的 文本框组件还慢~~~

不是应该比那东西快吗?

comeheres 发表于 2013-12-28 13:51:42

本帖最后由 comeheres 于 2013-12-28 13:56 编辑

只能说他们是不同的控件,实现的代码不同而已,这跟是什么语言都没关系……

你可以试试用delphi的RichEdit,使用前先设置个最大的行数,不然最多只能加载64KB的内容。
例如:
RichEdit1.MaxLength := $7FFFFFF0;

不过RichEdit不支持右键菜单,可以用ctrl+v粘贴试试,绝对比memo快很多。

你这是要写什么东西,还要用Memo1.Text:=String赋值大文本?如果是大的文本文件,直接一个loadfromfile就行了,同时为了防止在加载中界面频繁刷新,可以这样写:

Memo1.Lines.BeginUpdate;
Memo1.Lines.LoadFromFile('文件地址');
Memo1.Lines.EndUpdate;

comeheres 发表于 2013-12-28 13:55:21

如果只是文本处理,用Tstringlist就行了

创业中的屌丝 发表于 2013-12-28 14:28:53

comeheres 发表于 2013-12-28 13:55 static/image/common/back.gif
如果只是文本处理,用Tstringlist就行了

文本处理 然后需要显示给用户看~~

comeheres 发表于 2013-12-28 14:41:05

创业中的屌丝 发表于 2013-12-28 14:28 static/image/common/back.gif
文本处理 然后需要显示给用户看~~

.......几兆的文本,用memo看?

comeheres 发表于 2013-12-28 14:42:50

创业中的屌丝 发表于 2013-12-28 14:28 static/image/common/back.gif
文本处理 然后需要显示给用户看~~

文本是txt吗?还是其他格式的?

创业中的屌丝 发表于 2013-12-28 14:49:45

comeheres 发表于 2013-12-28 14:42 static/image/common/back.gif
文本是txt吗?还是其他格式的?

是Txt            复制进去 比易语言慢
DELPHI 的 string 操作快 比易语言快很多

但是我这里实际操作这文本   string操作和 复制进文本框的时间 统计易语言还快一点

创业中的屌丝 发表于 2013-12-28 14:50:16

所以咨询下 有没有其他组件 比较快赋值的!?

comeheres 发表于 2013-12-28 14:57:41

创业中的屌丝 发表于 2013-12-28 14:49 static/image/common/back.gif
是Txt            复制进去 比易语言慢
DELPHI 的 string 操作快 比易语言快很多



是txt的话,直接从文件加载啊,为何要复制粘贴?

comeheres 发表于 2013-12-28 15:00:37

创业中的屌丝 发表于 2013-12-28 14:50 static/image/common/back.gif
所以咨询下 有没有其他组件 比较快赋值的!?
你刚学吗?用memo1.lines.loadfromfile('C:\1.TXT'); 这样直接把C盘目录下的1.txt文件内容导入到memo了,为何还要去打开txt,然后复制一下,再粘贴一下呢。

如果嫌弃打开文件时找路径麻烦,直接来个拖拽,把txt文件拖到memo上直接加载,不是更好吗

创业中的屌丝 发表于 2013-12-28 15:04:41

comeheres 发表于 2013-12-28 15:00 static/image/common/back.gif
你刚学吗?用memo1.lines.loadfromfile('C:\1.TXT'); 这样直接把C盘目录下的1.txt文件内容导入到memo了, ...

用户需求手动复制!

并且第二个需求是正则筛选所有 \d{2}, 的然后赋值到 string    我看了下   string 操作很快就完成了

就是把string到 Memo1.Text 的时候很慢

comeheres 发表于 2013-12-28 15:09:55

创业中的屌丝 发表于 2013-12-28 15:04 static/image/common/back.gif
用户需求手动复制!

并且第二个需求是正则筛选所有 \d{2}, 的然后赋值到 string    我看了下    ...

不要用string,用stringlist……

comeheres 发表于 2013-12-28 15:26:31

创业中的屌丝 发表于 2013-12-28 14:50 static/image/common/back.gif
所以咨询下 有没有其他组件 比较快赋值的!?

嫌弃粘贴慢,用RichEdit就行了,右键菜单用PopupMenu来实现,需要什么功能,自己写代码

创业中的屌丝 发表于 2013-12-28 17:34:35

comeheres 发表于 2013-12-28 15:26 static/image/common/back.gif
嫌弃粘贴慢,用RichEdit就行了,右键菜单用PopupMenu来实现,需要什么功能,自己写代码

:lol:这速度 秒射啊~~~   太快了~~~

只是不能支持双击事件~~~   :sweat:想搞双击清空的功能~~~

comeheres 发表于 2013-12-28 17:36:19

创业中的屌丝 发表于 2013-12-28 17:34 static/image/common/back.gif
这速度 秒射啊~~~   太快了~~~

只是不能支持双击事件~~~   想搞双击清空的功能~~~

RichEdit有双击事件的,OnDblClick就是

创业中的屌丝 发表于 2013-12-28 17:38:01

comeheres 发表于 2013-12-28 17:36 static/image/common/back.gif
RichEdit有双击事件的,OnDblClick就是


创业中的屌丝 发表于 2013-12-28 17:38:42

老大 请看 真心木有~~

创业中的屌丝 发表于 2013-12-28 17:45:47

comeheres 发表于 2013-12-28 17:36 static/image/common/back.gif
RichEdit有双击事件的,OnDblClick就是
是我版本原因吗? RichEdit 没有OnDbClick事件?

comeheres 发表于 2013-12-28 17:48:28

创业中的屌丝 发表于 2013-12-28 17:45 static/image/common/back.gif
是我版本原因吗? RichEdit 没有OnDbClick事件?

可能吧,我用的是XE2{:2_26:}


页: [1] 2
查看完整版本: Delphi Memo 操作慢