超大文本装入stringgrid或richedit的问题,有请高手 (50分)

  • 主题发起人 主题发起人 peerson
  • 开始时间 开始时间
P

peerson

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个超大文本(》20M),需要在界面上快速显示出来,用richedit和stringgid中的loadfrom()方法,实在慢的难以忍受,但有不想为了这个而使用数据库,请高手给予指点,谢谢,本人刚来,分不多,能将1000000行'00000000000000000'文本以最快速度显示出来的朋友,50分奉上,请包涵!
目前使用richedit1.loadfromfile('demo.txt') 数据为1000000行,大小20M,约需60″
 
呜呜~~~在线等待高手解决
 
20M的东西用WORD打开,也需要不少时间呐!
 
如果这个问题解决不了的话,看看能不能变通一下,类似WORD的做法。首先读取文件的前N行到RichEdit中,然后刷新显示RichEdit,再在后台读取剩余的部分,也是采用N行N行的读取,分次将文件全部读入。这样虽然整体耗时增加,但是给客户的感觉是很快的。
 
试了N天了,还是找不到好的办法,郁闷~~~~~
 
用数据流的方式
RichEdit1.Lines.LoadFromStream();
 
只能部分读取,每次读取窗体显示的部分。自己处理滚动事件就可以了。
就像在Web页面,分页一样。
 
对,只能读一部分
或者采用映射内存的办法
具体在csdn开发高手上有讲,我现在记不清了,你去找找:0)
 
呜呜~~~~~~大家再给点详细的办法吧,头都大了啊[本来就不小:-)]
 
不知道你用过READBOOK没有,无论多大得文件,它得读取速度都是几秒。原因就是一个读取部分。
那么添加怎么同步滚动条呢。
我认为先读取必要得文件信息,比如大小,文字得多少,精确计算文件又可能得长度和MEMO得滚动条得长度。读取显示得部分,当然你可以多度一点,大约2页。
当翻页得时候,精确处理你所要显示得部分了。用指针来搜索内存得地址。就可以了。
笔者愚见。。
 
问题已经自己解决了,感谢大家的热心帮助,每人分配10分吧,希望以后大家多多指点!
 
解决办法:用SynEdit控件,装入20M的文本数据仅需2″左右。
 
后退
顶部