在一个edit框中输入信息,其中包括汉字信息如使用copy语句时有时候会截断占两个字符的汉字字符,造成信息不完整和保存入数据库时出现错误,如何解决这个问题

解决方案 »

  1.   

    edit1.text:='12我们';
      ShowMessage(copy(widestring(edit1.text),1,3));
      

  2.   

    请教hiflower(花)widestring这种方式计算出的长度是超出了string的实际长度,在保存入数据库时会出现错误如:“是超出str”这个字符串,用widestring得到的长度是6,而用string则是9,这样如果保存入char(6)的数据库时则会报错
      

  3.   

    ShowMessage(copy(widestring(edit1.text),1,3));学习
    up
      

  4.   

    如果要照顾到数据库字段的长度,那就有可能截断。
    如果不截断,就可能超过字段长度。
    一个方法是把最后的半个汉字丢弃:
    var 
      s:string;
      i:Integer;  Edit1.Text:='123我们';
      s:=Copy(Edit1.Text,1,6);
      i:=1;
      while i<=Length(s) do
      begin
        if s[i]>#127 then
        i:=i+1;
        if i>Length(s) then
        begin
          s:=Copy(s,1,i-2);
          break;
        end;
        i:=i+1;
      end;