哎!真没面子!完整代码如下: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.
注:上面有误!应去掉:Result[0]:=s[0];代之以Result:=S;
编译通过了
但执行的时候报错啊!是 Write('>');语句引起的
你的result是个string,怎么可以赋值呢??肯定通不过!
你只管字符串对拷就行了。它的长度会自动调整的。而且你访问string[0]
我估计返回是0,若我没记错。
要访问字串长度,用length或strlen
哎!真没面子!完整代码如下: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.
????