如何限定Edit,memo等里面输入的字符串长度假设限定为20个(中英文算一个字符),如果全是中文就只输20个,全是英文就40个,中文混合则20个

解决方案 »

  1.   

    ding
    自己在 Change 事件检查,可以么?
    然后在处理之前检查一下长度,超过就不允许继续。
      

  2.   

    检查是可以,不过好象判断长度比较麻烦.因为中英文混合时,英文字符要占两位来算,虽然实际是1位,所以这样一来, 用length(), strlen()等函数都不能正确反应我要的长度的.总不能让我一位位去取用去判断吧
      

  3.   

    晕, 地球人进化了, 说句无聊话哈, 真的是....Edit & Memo 中都有 MaxLength 属性, 你设一下就可以了嘛, 设 20 e 文, 中文就是 10 了
      

  4.   

    可能表达有点问题,使你误解了,举个例子吧,如果用 length(),或者象你说的那样设置 maxlength属性的话, 字符串一: 我的问题50 跟字符串二: 我们的问题, 这两串是一样的长度为10.但是手机发短信时,如果限定只能输5个字的话, 字符串一会被截成 :我的问题5. 可能用unicode编码可以判断我要的那种长度,但不知道是什么function
      

  5.   

    var
      s1: String;
      s2,s3: WideString;
    begin
      s1:='我的问题50';
      s2:='我的问题50';
      s3:='0123456789';
      Caption:=IntToStr(Length(s1))+';'+IntToStr(Length(s2))+';'+IntToStr(Length(s3))
    end;使用WideString即可判断。