string类型的的0字节不能操作。操作stirng必须从1字节开始。
0字节存储了字符串的长度。

解决方案 »

  1.   


    注:上面有误!应去掉:Result[0]:=s[0];代之以Result:=S; 
      

  2.   

    ch81(missile):是啊,我就是把0字节的长度取出来啊
      

  3.   

     enlightenment(阿明--进入准冬眠状态的超人);
    编译通过了
    但执行的时候报错啊!是 Write('>');语句引起的
      

  4.   

    Result[0]:=
    你的result是个string,怎么可以赋值呢??肯定通不过!
    你只管字符串对拷就行了。它的长度会自动调整的。而且你访问string[0]
    我估计返回是0,若我没记错。
    要访问字串长度,用length或strlen
      

  5.   

    呵呵,这个问题就是那个《斑竹答疑--Delphi高级编程技巧》上面的一个示例程序吧。字符串的小问题,把Result[0]:=S[0]改成Result:=S就可以了。
      

  6.   

    各位:  编译通过了 把Result[0]:=S[0]改成Result:=S但执行的时候报错啊!是 Write('>');语句引起的
      

  7.   


    哎!真没面子!完整代码如下:program Project2;{$APPTYPE CONSOLE}//此处为关键uses
      SysUtils;const
      C1 = 52845;
      C2 = 22719;function Encrypt(const S:String;Key:Word):String;
      var I:byte;
        begin
        Result:=S;        for I:=1 to Length(S) do
              begin
              Result[I]:=char(byte(S[I]) xor (Key shr 8));
              Key:=(byte(Result[I])+Key)* C1+C2;
              end;
        end;function Decrypt(const S:String;Key:Word):String;
    var I:byte;
    begin
      Result:=s;
      for I:= 1 to Length(S) do
        begin
        Result[I]:=char(byte(S[I]) Xor (Key shr 8));
        Key:=(byte(s[I])+Key)*C1 + C2;
        end;
    end;var S:string;
    begin
      Write('>');
      Readln(S);
      S:= Encrypt(S,12345);
      Writeln(S);
      S:=Decrypt(s,12345);
      Writeln(S);
    end.
      

  8.   

    enlightenment(阿明--进入准冬眠状态的超人)给分了做个朋友啊!俺是初学啊
      

  9.   

    {$APPTYPE CONSOLE}//此处为关键
    ????