汉字的ASCII码都比字母大~~~

解决方案 »

  1.   

    try inttostr()不行么?
      

  2.   

    function CountChineseNum(const Value : String;) : Integer
    var  S1 , S2 : String;
         pstr    : PWideChar;
    begin
      result := 0;
      S1 := Value;
      while Length(S1) > 0 do
      begin
        GetMem(pstr,Length(S1)*2+2);
        StringToWideChar(S1,pstr,Length(S1)+1);
        S2 := WideCharLenToString(pstr,1);
        FreeMem(pstr,Length(S1)*2+2);
        S1 := Copy(S1,Length(S2)+1,Length(S1)-Length(s2));
        result := result + 1;
        end;
      end;//while
    end;
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    <br />var istr,str:string;
    <br />i:integer;
    <br />begin
    <br />     istr:='f45中%过人$`国``3.,';
    <br />     str:='';
    <br />     for i:=1 to length(istr) do
    <br />     begin
    <br />          if istr[i]>chr(127) then
    <br />          str:=str+istr[i];
    <br />     end;
    <br />     showmessage(str);//中文
    <br />end;
    <br />
      

  4.   

    判断字符串中的每个字符是否数字或字母
    用chr()函数先将字符转成ASCII码再判断大小

    if (chr(str1[i])>=chr('0')) and (chr(str1[i])<=chr('9')) then
      inc(numcount);
      

  5.   


      最简单的办法是:
    length(yourstring)-length(widestring(yourstring))=汉字个数
    2*length(widestring(yourstring))-length(yourstring)=英语个数
    ////////////////////////////////////////
    中国使用的是汉字,而又夹杂这些英文,这样我们在数字数时就麻烦了,电脑是按字节来计算,一个汉字算两个字,而中国人的习惯是一个汉字就是一个字,所以通过电脑来计算必须解决下列问题:
    利用文本控件Tmemo来存放文章,分别对中、英文的字符数进行统计,我们可以通过把字符转换为ASCII码数值来进行判断,Ord()函数就可以把字符转换为对应的数值,值33-126为键盘可使用字符,值127以上的为未知字符,即为汉字
    procedure TForm1.Button1Click(Sender: Tobject);
    var s:string;
    I,e,c:integer;
    begin
    s:=memo1.text;
    e:=0;c:=0;
    for I:=1 to length(s) do
    begin
    if (ord(s[I])>=33)and(ord(s[I])<=126) then
    begin
    inc(e);
    label1.caption:='英文字数:'+inttostr(e);
    end
    else
    if (ord(s[I])>=127) then
    begin
    inc(c);
    label2.caption:='中文字数:'+inttostr(c div 2);
    end;
    end;
    end;
      

  6.   

    var
       S: WideString;
       s1: String;
       intNo: Integer;
    begin
       S := Edit1.Text;
       for intNo := 1 to Length(S) do
       begin
          s1 := S[intNo];
          if Length(s1) > 1 then
             // 汉字或双字节字符
          else
             // 字母或数字,或单字节字符
       end;
    end;用以上方法判断哪个是汉字或单字节字符。
      

  7.   

    function IsChineseChar(var s:String):boolean;
    var
       i:Integer;
    begin
       Result:=false;//默认为英文或数字
       for i:= 1 to Length(S) do
       begin
    if Ord(String[i])>=160
    Result:=true;
    break;
             // 汉字符ASCII大于等于160
       end;
    end;