我是个初学者,刚看了几天的书,手就有点痒痒,想做一个简单的不能在简单的例子:
我只想实现在RichEdit中一边输入文字,在下面的StatusBar中显示输入的总字数,我现在已做到了可以获取字数,但现在的问题是除中文外的其它字符都算做1个字,而中文字的一个字就算做了2个字,这样统计字数就不正确了,该怎么处理中文字呀,中文字和其它混合在一起正确统计字数
我只想实现在RichEdit中一边输入文字,在下面的StatusBar中显示输入的总字数,我现在已做到了可以获取字数,但现在的问题是除中文外的其它字符都算做1个字,而中文字的一个字就算做了2个字,这样统计字数就不正确了,该怎么处理中文字呀,中文字和其它混合在一起正确统计字数
var ans : AnsiString;
wis : WideString;
sub : Integer; //汉字的个数
Begin
ans := '盗版delphi';
wis := WideString( ans );
sub := Length( ans ) - Length( wis );
End;
var ws:widestring;
begin
ws:='test试试';
ShowMessage(IntToStr(length(ws)));//length(ws)=6
end;
procedure TForm1.Button1Click(Sender: TObject);
var
c1,c2: Char;
begin
c1 := edit1.Text[1];
c2 := edit1.Text[2];
{ GBK字符集的一个汉字内码这样的规则:
包含两个字节,
前一字节的取值范围在$81~$FE之间,
后一字节不等于$7F
因为GBK包含GB2312,所以此规则也适应于GB2312
}
if (ord(c1)>=$81) and (ord(c1)<$FE) then begin
if ord(c2)<>$7F then
showmessage('是汉字')
else
showmessage('不是汉字');
end
else
showmessage('否');
end;