发信人: 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加以限定的原因我就不太清楚了,具体看看汉字的编
码表就应该能清楚了,可以在系统中用造字程序看看。
|
|