var
  s: WideString;
  s1: String;
  
  for i := 1 to length(s1) do
  begin
    s := s + WideChar(s1[i]);
  end;
  
当 s1[i] := #91时赋值给s以后s[i]就变成了 $3F。找不出原因

解决方案 »

  1.   

    刚才错误,应该是:
    当 s1[i] := $91时赋值给s以后s[i]就变成了 $3F。找不出原因
      

  2.   

    94,测试没有必要这样吧,s := s1完showmessage出来看就知道了
      

  3.   

    顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
    顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
    顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶upup顶顶顶顶顶顶顶顶顶顶顶
    顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶upup顶顶顶顶顶顶顶顶顶顶顶
    顶顶upupupup顶顶顶顶upupupupup顶顶顶upupupupup顶顶upupupupup顶顶顶顶
    顶upup顶顶upup顶顶upup顶顶顶顶顶顶upup顶顶upup顶顶upup顶顶upup顶顶顶
    顶upup顶顶顶顶顶顶upup顶顶顶顶顶顶upup顶顶upup顶顶upup顶顶upup顶顶顶
    顶upup顶顶顶顶顶顶顶upupupup顶顶顶upup顶顶upup顶顶upup顶顶upup顶顶顶
    顶upup顶顶顶顶顶顶顶顶顶顶upup顶顶upup顶顶upup顶顶upup顶顶upup顶顶顶
    顶upup顶顶upup顶顶顶顶顶顶upup顶顶upup顶顶upup顶顶upup顶顶upup顶顶顶
    顶顶upupupup顶顶顶upupupupup顶顶顶顶upupupupup顶顶upup顶顶upup顶顶顶
    顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
    顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
      

  4.   

    var
      s: WideString;
      s1: String;
      i:integer;
    begin
      s1:='$91';
    {  for i := 1 to length(s1) do  //这样赋值也没问题啊
      begin
        s := s + WideChar(s1[i]);
      end;
    }
      s:=s1;  //直接赋值没有问题
      showmessage(s);
    end;能否把你的具体函数帖出来?
      

  5.   

    showmessage(s);是没问题
    但是把s写入文本文件里面就不对了。
    不信你试试
      

  6.   

    WideChar的长度可是2个字节,恐怕是你自己在文件里面数错位置了吧~~~
      

  7.   

    s由widestring变成string就不对了。
    我也不知道什么原因
      

  8.   

    s是我从string转换过去的,然后转回string就不对了
      

  9.   

    var
      s1: String;
      i :Integer;
      s2 :PWideChar;
    begin
      s1 := '士大夫决撒乐观盛大个似的赶得上eay3qdfahnwagh35q2u5ufb';
      GetMem(s2,255);
      StringToWideChar(s1,s2,255);
      Edit1.Text := WideCharToString(PWideChar(s2));
    end;
      

  10.   

    to  Kevin_Lmx(繁华阅尽) 
    当 s1[i] := #91时赋值给s以后s[i]就变成了 $3F。找不出原因
    不是所有的字符都这样,是某些字符的问题