字符和汉字计数的问题 在memo中输入任何字符,需要显示字符数,输入任何一个字符都加1,例如:我输入“abc”显示为3,输入“ab你好”显示为4,这个怎么能实现呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 length(memo.lines.Text)实际的处理就是一个字符串而已。俄没测过回车符计未计到里面:) length(memo.lines.Text)实际的处理就是一个字符串而已。俄没测过回车符计未计到里面:)这样如果输入“你好abc” 显示的就是6了,显示的不正确啊,我的意思是应该显示5的 procedure TForm1.btn1Click(Sender: TObject);var s: WideString;begin s := mmo1.Text; ShowMessage(IntToStr(Length(s)));end; 前面已经提到过,memo1回车换行时有回车符算一个。你把全部的字符删除的话,也能显示5,回车换一行的话,显示为7,想要等到实际的长度需要把字符串中不可视的回车符去掉。Uses StrUtils;//测试版本为XEvar tmpStr:string;begin tmpStr:= memo1.Lines.Text; //ShowMessage(tmpStr); tmpStr:= AnsiReplaceStr(tmpStr,#13#10,'') ; //ShowMessage(tmpStr); ShowMessage(IntToStr(Length(tmpStr)));end; uses StrUtils;procedure TForm1.Button1Click(Sender: TObject);var s: Ansistring; ws: WideString;begin s := Memo1.Text; s := AnsiReplaceStr(s,#13#10,'') ; ws := s; //必须用 widestring 转换,才能统计中文 ShowMessage(IntToStr(Length(ws)));end; 将字符串中的每个字符,用下列函数检测一下,再统计:function IsMBCSChar(const ch: Char): Boolean; begin Result := (ByteType(ch, 1) <> mbSingleByte); end; 汉字是占两个字符,它的首字符的ByteType属性是mbSingleByte值。通过它可以是否为汉字。这样不就可以计数了吗? SQL语句改错 如何让程序在最小化后不在任务栏上显示出来 请问在delphi怎样和网页连接起来? 如何将一个已有的应用程序链接到自己的程序中?比如将计算器连到程序中 哪位大虾有关于DELPHI7的下载? f1book的行或列怎么合并? SPCOMM 串口接收问题 如何将一个tablesheet的控件原封不动的拷到另外一个form的tablesheet上 我在win2000 server下编的数据库程序,只能在win2000下运行..... fastreport使用 delphi模拟鼠标遇到的问题路过的进来看看 skctsrvr.exe占用100%的cpu
实际的处理就是一个字符串而已。俄没测过回车符计未计到里面:)
实际的处理就是一个字符串而已。俄没测过回车符计未计到里面:)
这样如果输入“你好abc” 显示的就是6了,显示的不正确啊,我的意思是应该显示5的
procedure TForm1.btn1Click(Sender: TObject);
var
s: WideString;
begin
s := mmo1.Text;
ShowMessage(IntToStr(Length(s)));
end;
Uses StrUtils;//测试版本为XE
var tmpStr:string;
begin
tmpStr:= memo1.Lines.Text;
//ShowMessage(tmpStr);
tmpStr:= AnsiReplaceStr(tmpStr,#13#10,'') ;
//ShowMessage(tmpStr);
ShowMessage(IntToStr(Length(tmpStr)));
end;
var
s: Ansistring;
ws: WideString;
begin
s := Memo1.Text;
s := AnsiReplaceStr(s,#13#10,'') ;
ws := s; //必须用 widestring 转换,才能统计中文
ShowMessage(IntToStr(Length(ws)));
end;
begin
Result := (ByteType(ch, 1) <> mbSingleByte);
end;