精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Delphi>>中文相关>>统计汉字字数的程序

主题:统计汉字字数的程序
发信人: yonglijiao(yongli.jiao)
整理人: teleme(2001-02-04 15:29:10), 站内信件
各位:
   这是一个统计汉字字数的程序,请问其中的‘129’‘254’‘64’‘161’‘169’
这几个数字是什么意思,从那来的。
procedure TForm1.Button1Click(Sender: TObject);
var character,i:integer;
str:string;
begin
i:=1;
character:=0;
str:=memo1.lines.text;
if length(str)>0 then
repeat
if (ord(str[i])>=129) and (ord(str[i])<=254) and (ord(str[i+1])>=64) and
 (ord(str[i+1])<=254) then
begin
if (ord(str[i])>=161) and (ord(str[i])<=169 ) then
i:=i+2
else
begin
i:=i+2;
character:=character+1;
end;
end
else
i:=i+1;
until i>=length(str);
 label1.caption:=inttostr(character);
 end;



//*********************************************
发贴人:xiaorj(DrX)
【 在 yonglijiao 的大作中提到:】 
:各位: 
:   这是一个统计汉字字数的程序,请问其中的‘129’‘254’‘64’‘161’‘169’ 
:这几个数字是什么意思,从那来的。 
:procedure TForm1.Button1Click(Sender: TObject); 
:var character,i:integer; 

:...... 
这样,汉字编码是双字节,为了与普通ASCII码区分,第一个字节从129开始,到254结束。按第一字节将汉字分区,161~169区是标点符号等非汉字区,所以不需要统计字数。而第二个字节从64到161加以限定的原因我就不太清楚了,具体看看汉字的编 
码表就应该能清楚了,可以在系统中用造字程序看看。 
  


[关闭][返回]