请大家帮帮忙,怎样求Memo里字的个数!!1

kinglh 2003-10-21 10:53:31
在一个Memo中怎样统计它里面的个字,全角或汉字,或标点符号都算一个,
如:论坛发表新贴子abc
则字的个数为10.我用Memo1->GetTextLen(),吸能统计Memo1的字节个数,怎样才能把它的字数统计出来.请大家帮帮忙! 急要用!
...全文
41 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cocoky 2003-10-24
  • 打赏
  • 举报
回复
有问题
suiyi999 2003-10-24
  • 打赏
  • 举报
回复
yjy1001 2003-10-24
  • 打赏
  • 举报
回复
2000年?!
上那去找,快成老古董
kinglh 2003-10-21
  • 打赏
  • 举报
回复
谢谢各位帮忙啊! 基本已经解决我想的了!

继续讨论讨论有没有更好的方法!
ccrun.com 2003-10-21
  • 打赏
  • 举报
回复
我也来一个,不过有空行的时候仍然计算不准确(就是考虑这回车换行符的问题)


void __fastcall TForm1::Button1Click(TObject *Sender)
{
int nLineCount = Memo1->Lines->Count;
ShowMessage(Memo1->Text.WideCharBufSize()+1 - nLineCount*2);
}

看看有没有更好的方法。
Kabin 2003-10-21
  • 打赏
  • 举报
回复
>>可是当是全角的时候,还是算了两个!

??不会啊,全角字符都算了一个哦

kinglh 2003-10-21
  • 打赏
  • 举报
回复
谢谢你! 可是当是全角的时候,还是算了两个!
huangjuliang 2003-10-21
  • 打赏
  • 举报
回复
是呀!回车不算字符?
ccrun.com 2003-10-21
  • 打赏
  • 举报
回复
好象把回车都算进去了。
Kabin 2003-10-21
  • 打赏
  • 举报
回复
支持 huangjuliang(学习,学习,再学习!)
amwn 2003-10-21
  • 打赏
  • 举报
回复
楼上的不错!
huangjuliang 2003-10-21
  • 打赏
  • 举报
回复
上面忘了一点;

WideString aa=Memo->Text.c_str();
Edit1->Text=aa.Length();
huangjuliang 2003-10-21
  • 打赏
  • 举报
回复
来个简单一点的!

WideString aa=Memo1->Text;
Edit1->Text=aa.Length();
netsys2 2003-10-21
  • 打赏
  • 举报
回复
编个小程序就可以了。

汉字由2个BYTE组成,其中首BYTE应该在0xB0~0xD7之间,

你把Memo->Text全部扫描:

char *s = Memo->Text.c_str();

int count=0;//计数
BYTE c;
for(;*s;s++)
{
c = (BYTE)*s;
if( c>=0xB0 && c<=0xd7 )
s++;
count++;
}
hy1080 2003-10-21
  • 打赏
  • 举报
回复
记得2000年时有一本叫做CBC5API实例有一个打字程序上有。
huangjuliang 2003-10-21
  • 打赏
  • 举报
回复
如果我考试回车的话,那只能把Memo1->Text扫描一下,把回来过滤掉,
遇到汉字,两个字节+1,其它+1

这样就没有任何问题了!
yjy1001 2003-10-21
  • 打赏
  • 举报
回复
综合上面
char *s = Memo->Text.c_str();
int count=0;//计数
BYTE c;
for(;*s;s++)
{
c = (BYTE)*s;
if( c>=0xB0 && c<=0xd7 )
s++;
if(c>31)//去掉回车换行。这样 应该准的
count++;
}
ShowMessage(IntToStr(count));

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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