在 Delphi 中判断一个字符是中文的方法

http://blog.163.com/l1_jun/blog/static/143863882011741124581/

由于 Delphi2005 支持中文标识符,在编写 PASCAL 词法分析器的过程中遇到了这个问题,经过多次试验找到了解决方案,至今未发现问题。

代码如下:

//判断字符是否是汉字 
function IsHZ(ch: WideChar): boolean;
var
  i:integer;
begin
  i:=ord(ch);
  if( i<19968) or (i>40869) then
    result:=false else result:=true;
end;


2005年1月28日:感谢滚龙的指点在 Delphi 中判断一个字符是中文的方法 - 自助者天助之 - 冰冻三尺,非一日之寒,已将代码改写如下:

//判断字符是否是汉字 
function TForm1.IsHZ(ch: Char): boolean;
begin
  //返回值为 0 的时候为单字节字符,返回值为 1 的时候为多字节字符 
  if(ord(bytetype(ch,1))=1) then result:=true
  else result:=false;
end;


2005年1月31日:谢谢滚龙再次赐教,代码已收藏!
//┏━━━━━━━━━━━━━━┓
//┃代码着色:CodeColor v1.0  
//┃来自:悄然无声的 Blog     ┃       
//┗━━━━━━━━━━━━━━┛

//判断字符是否是汉字
function IsMBCSChar(const ch: AnsiString): Boolean; //转载时修改
begin 
  Result := (ByteType(ch, 1) <> mbSingleByte); 
end; 


一些感想:这应该就是正规军和游击队之间的差别了,正规军打仗讲究全局、战法、配合和协同;游击队战场狭小,眼界有限,条件落后,为了打鬼子经常用一些土办法。还好现在有了网络,要不然像我这样的业余爱好者就真的只能闭门造车了。

本文引用通告地址: http://blog.csdn.net/wlnh_2004/services/trackbacks/270866.aspx 
原文地址:https://www.cnblogs.com/rogge7/p/6118588.html