if char=['a'..'z','A'..'Z'] then
  english
else
  chinese;

解决方案 »

  1.   

    if char=['a'..'z','A'..'Z'] then
      english
    else
      chinese;
    同意楼上说法。
      

  2.   

    楼主的意思可能是说如何判断输入的字符是单字节还是双字节的吧。若是这样,问题也简单,用 WideString 解决。例如:var
       i: Integer;
       strChar: String;
       wstrTemp: WideString;
    begin
       wstrTemp := Edit1.Text;   // ... ...
       strChar := wstrTemp[i];
       if Length(strChar) > 1 then
          // 双字节字符
       else
          // 单字节字符   // ... ...
    end;
      

  3.   

    有一个api可以搞定:
    BOOL IsDBCSLeadByte(
      BYTE TestChar   // character to test
    );
    具体用法:
    function IsDBCSCharIncluded: Boolean;
    var
      i: Integer;
      strEdit: WideString;
      strTmp: string;
    begin
      Result := false;
      strEdit := Edit1.Text;
      for i := 1 to length(strEdit) do
      begin
        strTmp := strEdit[i];
        if length(strTmp)>0 then
          if IsDBCSLeadByte(Byte(strTmp[1])) then
          begin
            Result := true;
            break;
          end;
      end;
    end;只要edit框里有汉字或是全角的字符,该函数就会返回true.
      

  4.   

    参考kyee的方法if Length(WideString(Edit1.Text)) <> Length(Edit1.Text) then
      ShowMessage('有汉字');Caption := IntToStr(Length(Edit1.Text) - Length(WideString(Edit1.Text)));