function cpwd(str:String):string;
  var
    i : integer;
  begin
    result :='';
    for i := 1 to length(str)  do begin
      result := result + chr(ord(str[i]) xor 22);
    end;
end;在DELPHI7下。用上面的函数。cpwd('中国人') ;
作用是把每个字符进行XOR 22。再把得到的结果在DELPHI2009中。
采用相同的函数CPWD转换过来。就是乱码。请问在DELPHI2009这个CPWD函数要怎么改动呢?
DELPHI7的不能改了。

解决方案 »

  1.   

    自己解决了。result := result + ansichar(chr(ord(str[i]) xor 19));在DELPHI这样就行。=============
    谁来回复下,我给分了。
      

  2.   

    function cpwd(str:String):string;
      var
      i : integer;
      begin
      result :='';
      for i := 1 to length(str) do begin
      result := result + chr(ord(str[i]) xor 22);
      end;
    end;这个函数计算时还要考虑下 ansistring  widestring的问题 不然 length 是有问题的
      

  3.   

    2009的string和d7的string不一样,包括char,pchar都不一样,你最好用ansistring,或ansichar,pansichar