txt文本阅读(vs2005+MFC+ppc)

changestyle 2008-09-08 05:29:32
最近开发一个手机项目,里边有个子功能是显示本地(storage card)txt格式的文本文件。

我的思路是这样的:
1,添加一个CEdit控件
2,将任意txt文本文件按行一次性读入一个CString中
3,将这个CString中的内容显示在CEdit中

按这样的思路实现后问题就出现了:

主要是读取文件速度慢: 大约加载一个15k左右的txt文本文件到内存中需要3秒时间,但在Windows平台下可以忽略时间。

如果分段读入内存再显示,怎么处理用户的跳页显示(软件支持上一页,下一页,跳页显示),又是很麻烦的算法问题。

现在就是考虑如何优化的问题。
我想现在那款手机几乎都有txt文本阅读的功能,这个方面的技术应该比较成熟了,可是搜索了一下,没有找到合适的。

不知道各位有没有好的方法或建议。
...全文
224 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
changestyle 2008-09-09
  • 打赏
  • 举报
回复
刚用了内存文件映射
对于现在这种CEdit显示思路确实不理想,
内存文件映射的优点就是:操作得到的映射起始指针就像操作本地内存一样,

但这里的怎么都要将这些内容赋予一个CString中并SetWindowText()中,这样又相当于new了一定量的内存,这样下来跟平常读文件是一样的。

各位高人,有没有其它方法。手机读txt阅读功能技术应该很成熟的,却不知道具体实现思路..

有翻页,跳页,还支持滚动,确实如果部分部分读的话,这个算法。。
北方大冬瓜 2008-09-09
  • 打赏
  • 举报
回复
CEdit 显示大于 64K 的文本似乎会出问题吧?建议一次只读一屏显示的文本,这样就没速度问题了。
ren22342411 2008-09-09
  • 打赏
  • 举报
回复
建议不要使用MFC。。
changestyle 2008-09-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 pknife 的回复:]
一次读入不行吗?操作中再对CString进行解析。
[/Quote]

当时处理时候是边读便分行
原理是:先读文件一部分(比如256个字节)到内存,再在内存中处理判断分行,这样依次处理分析加到一个CString中

一次读取内存后,再分行处理,感觉用的时间是一样的。
changestyle 2008-09-09
  • 打赏
  • 举报
回复
内存文件映射,没有用过,不知效果怎么样。

根据项目的要求,读取txt文本的大小应该不超过 1MB, 对于1MB的东西在Windows平台下很快,在手机上却出奇的慢。


不知道用内存文件映射方法在手机上处理1MB的东西效果怎么样。试试再说

p.s 用内存文件映射得到文件的大小和起始指针后,用什么样的好方法可以快速读入到CEdit控件中

以前的方法是都读取到一个CString中,再SetWindowText()到CEdit控件中。

小李匪盗 2008-09-09
  • 打赏
  • 举报
回复
一次读入不行吗?操作中再对CString进行解析。
ligangok 2008-09-09
  • 打赏
  • 举报
回复
首先读出第一部分,然后再启用领一个线程读入其他的部分
caicaileowince 2008-09-09
  • 打赏
  • 举报
回复
推荐用内存文件映射,这样可以减少读取时间
cppguru 2008-09-09
  • 打赏
  • 举报
回复


大文本Edit控件本身会有很多问题,不如用内存映射文件,之后自己写一个控件来显示
如果你用HZK16之类的点阵字就很简单了,直接计算指针位置就可以了。但是,如果要用变宽TTF字体的话就比较复杂了,你需要先
扫描全部文件,进行排版——这里需要有一些TTF字体的基本知识,比如字符的Baseline,pitch等等。
关于数据结构,可以用双向链表,每个链表存储每一行的第一个和最后一个字在文件中的位置。

当然,如果你要实现对齐就更复杂一些了(就像Word中间,仔细观察会发现,当你换行的时候,插入新字符Word会自动调整字间距
使文本块左右对齐)
changestyle 2008-09-08
  • 打赏
  • 举报
回复
对,是循环一次性 把整个txt文件内容读入到内存
小李匪盗 2008-09-08
  • 打赏
  • 举报
回复
2,将任意txt文本文件按行一次性读入一个CString中,循环读吗?

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧