如何统计Memo或RichEdit中的中英文字数?(100分)

  • 主题发起人 主题发起人 zfh
  • 开始时间 开始时间
Z

zfh

Unregistered / Unconfirmed
GUEST, unregistred user!
我想编一个打字测试程序,一边打一边显示字数和速度,但不知如何实现(特别是中文或者中英混合的情况)。
 
因为是打字就可以不考虑鼠标了,在onchange事件里,依次判断每个个字节是否大于128,
如是,汉字加一,且忽略后面的1个字符;若小于则是ascii。
公共变量
charcount:integer;中英文字符总数
v:integer;速度
st:tdatetime;开始时间

onchange:
k:=0;
for i:=1 to length(memo1.text) do
begin
//控制符号就不算了吧
if ms=控制符号,10,13,tab等 then
continue;
//是否是中文
if ord(ms)>128 then
begin
//ms+ms[i+1]是一个汉字
k:=k+1;
continue;
end
else
k:=k+1;
end;
charcount:=k;
v:=k/(now()-st);


 
基本同意g622
 
打字测试不会要他输入太多的字符吧。 :)
如果担心处理太慢,可以用一个数组,记录每行的字符数,然后只统计和更改当前
光标所在的上一行以后的各行的字符数,然后直接把数组里的值加一下就可以了。
这样应该能解决较长的文章了
 
谢谢g622,我想我的问题应该可以解决了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
824
DelphiTeacher的专栏
D
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部