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