RT

解决方案 »

  1.   

    asia char's two bytes and code value bigger than 127
      

  2.   

    function CheckName(StrName:String;MaxLen:integer=4):Boolean;
      var i:integer;
      begin
        Result:=False;
        if Length(StrName)>MaxLen then Exit;
        for i:=1 to Length(StrName) do
        begin
          if ord(StrName[i])<127 then
          begin
            result:=false;
            exit;
          end;
        end;
        Result:=true;
      end;
      

  3.   

    我写这个主要是练手用的。本人初学DELPHI。
    猩猩老兄和我写的差不多,不过应该还要判断一下中文的标点符号吧,因为逗号,句号什么的转换后也大于127。
    我总觉得这样有欠缺,不知道为什么。
      

  4.   

    //参考如下代码
    function IsChineseCharacters(mChar: WideChar): Boolean;
    begin
      case mChar of
        #19968..#40869,
        #57344..#59492,
        #63744..#64041: Result := True;
      else Result := False;
      end;
    end; { IsChineseCharacters }function TryChineseName(mName: WideString): Boolean;
    var
      I: Integer;
    begin
      Result := False;
      if (Length(mName) < 2) or (Length(mName) > 4) then Exit;
      for I := 1 to Length(mName) do
        if not IsChineseCharacters(mName[I]) then Exit;
      Result := True;
    end; { TryChineseName }//Example
    procedure TForm1.Edit1Change(Sender: TObject);
    begin
      Caption := BoolToStr(
        TryChineseName(TEdit(Sender).Text),
        True
      );
    end;