本帖最后由 wangwei244157887 于 2012-06-13 01:42:22 编辑

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var s :WideString;
    begin
      s:='我a们b';
      showmessage(s[3]);
    end;
      

  2.   

    不同版本是不同的
    ansi编码是1个汉字2个字节,键盘上你看到的字符都是1个字节,其它特殊字符大多都是2个字节
    Unicode都是2个字节可以转换为widestring,循环取s[i]
      

  3.   

    有个ByteType函数可以使用,你Copy时先判断这个位置是不是双字节字符的首字节,如果是的话Copy时就加1个字节,这样就不会复制错了。case ByteType(Edit1.Text, 3) of
      mbSingleByte:
        Label1.Caption:='单字节(ASCII)字符';
      mbLeadByte:
        Label1.Caption:='双字节字符首字节';
      mbTrailByte:
        Label1.Caption:='双字节字符尾字节'
    End;