数组的下标是从0开始的,应改成function jiami(input:string;key:word):string;
var
i:integer;
begin
for i:=0 to length(input)-1 do 
result[i]:=char(byte(input[i]) xor (key shr 8));
end;

解决方案 »

  1.   

    可是string类型的下标0是存放长度的啊?
      

  2.   

    你可以把string看成一个char的数组,数组的下标是从0开始的.可以用以下的方法,倒过来循环
    var I: Integer;begin
      I := Length(MyString);
      while I > 0 do
      begin
        {这儿加上对字符进行加密的代码}
        I := I - 1;
      end;
    end;
      

  3.   

    已 test ok 
    function jiami(input:string;key:word):string;
    var
    i:integer;
    begin
    setlength(result,length(input));
    for i:=1 to length(input) do
     result[i]:=char(byte(input[i]) xor (key shr 8));end;
      

  4.   

    delphi 中的string类型的下标是从1开始的,这是不同于其它开发语言的,比如c里面的pchar类型就是从0开始的,所以上面的循环变量是对的,只不过没有给字符串设定长度,就会出错了
      

  5.   

    谢谢,各为了!
    setlength是给字符串设定长度的吗?
    是不是只有等长的字符串才能互相赋值呢?