开始折腾RichEdit控件,准确统计字符好难啊!

秋天之落叶 2019-10-09 10:44:22
更换考试界面,为了适应各种属性,memo换成了richedit,这下可折腾惨了:
冻结部分字符,设置需要冻结的开始和结束区域的字符数,如果区域规范,最后冻结的字数没什么问题,但一旦区域中有空格、换行等特殊字符时,length(richedit.text)就不准了,不是多几个就是少几个,折腾三天了,最后按行统计字符数,最后在加起来,还要考虑各种情况,勉强过关,健壮性不足,提心吊胆的。
我基本是按行冻结的,请问一下:
1:应该如何准确的统计几个段落的字符数,并冻结?
2:有没有按行冻结的属性?
...全文
295 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sczyq 2019-10-16
  • 打赏
  • 举报
回复
引用 9 楼 秋天之落叶 的回复:
richedit.lines.add(ado.fieldbyname('字段').asstring)
这样没问题啊, 只是这样的话你要统计字数做什么? 如果要对一些关键字上颜色, 才需要位置, 就照我说的做. 可以看: https://blog.csdn.net/sczyq/article/details/99974889 不过这是 BCB 的码喔
gdljf 2019-10-16
  • 打赏
  • 举报
回复
刚好前阵子碰到过同样的问题,最后发现是自动换行惹的祸,因为RichEdit自动换行时会在换行处给你插入回车,行数、字符数也会相应的变化,所以在统计字符数时,需要增加因自动换行而增加的字符数。 解决的方法是按行读取,trim()后判断是不是同一段落的,是的话就把整行的长度加上(按trim前的长度),这样出来的长度才正确
  • 打赏
  • 举报
回复
所以还是用TWebBrowser打开网页方式简单
秋天之落叶 2019-10-16
  • 打赏
  • 举报
回复
引用 10 楼 sczyq 的回复:
这样没问题啊, 只是这样的话你要统计字数做什么?

如果要对一些关键字上颜色, 才需要位置, 就照我说的做.

可以看: https://blog.csdn.net/sczyq/article/details/99974889

不过这是 BCB 的码喔

考试界面,控件内显示问题,冻结问题,下面可以写答案,所以要准确地控制冻结字数。
多冻结一个字符,下面就不能再写入内容,少冻结一个字符,可能把问题给删除了。
秋天之落叶 2019-10-15
  • 打赏
  • 举报
回复
引用 8 楼 sczyq 的回复:
这事哥帮你!

如果遇到 #10 就将位置减1

数据表中调出数据,直接赋给
richedit.lines.add(ado.fieldbyname('字段').asstring)
其中有很多段落,如何判断是不是含有#10?
sczyq 2019-10-15
  • 打赏
  • 举报
回复
这事哥帮你! 如果遇到 #10 就将位置减1
秋天之落叶 2019-10-14
  • 打赏
  • 举报
回复
引用 6 楼 doloopcn 的回复:
Length可以解决你的问题吧

逐行统计才准确,按照文本内容统计有误差。
doloopcn 2019-10-14
  • 打赏
  • 举报
回复
Length可以解决你的问题吧
ooolinux 2019-10-09
  • 打赏
  • 举报
回复
问题和答题不要放在同一个richedit里吧
秋天之落叶 2019-10-09
  • 打赏
  • 举报
回复
我不是选择区域,而是先显示问题,然后冻结问题,问题下面开始答题。答题中不能删除问题。
所以不涉及鼠标选择区域等操作,相对比较简单。
可惜,搜richedit的内容极少,全是抄录代码,基本没有参考价值。
冻结后不能clear都找不到,还得翻参考书,唉~~~
秋天之落叶 2019-10-09
  • 打赏
  • 举报
回复
引用 2 楼 ooolinux 的回复:
问题和答题不要放在同一个richedit里吧

不在一个控件,太占地方去,设计起来也不好看。


引用 3 楼 p47655255 的回复:
richedit 多行 计算长度的时候,需要去掉 回车符和换行符

按行统计字符,最后去掉一个字符长度,目前比较准确,不知道还会出现什么变化?


引用 4 楼 早打大打打核战争 的回复:
我感觉还是题目写成网页用TWebBrowser加载更方便一些

对网页不熟悉,测试了一下,可以写内容,再慢慢研究一下。
  • 打赏
  • 举报
回复
我感觉还是题目写成网页用TWebBrowser加载更方便一些
p47655255 2019-10-09
  • 打赏
  • 举报
回复
richedit 多行 计算长度的时候,需要去掉 回车符和换行符

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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