原过程为
procedure EncyNDecy(const ASrc: string; var ADest: string;
const AOpt: Integer);
var
I: Integer;
BB: Byte;
begin
SetLength(ADest, Length(ASrc));
case AOpt of
1: begin // 加密
for I := 1 to Length(ASrc) do begin
BB := Byte(ASrc[I]) xor $9F;
BB := (BB shr 4) or ((BB and $F) shl 4);
ADest[I] := Char(BB);
end;
end;
2: begin // 解密
for I := 1 to Length(ASrc) do begin
BB := Byte(ASrc[I]);
BB := ((BB shr 4) and $F) or ((BB and $F) shl 4);
BB := BB xor $9F;
ADest[I] := Char(BB);
end;
end;
end;
end现在有2对数组:
Buf1 : array[0..400]of Char
Buf11 : array[0..400]of Char
Buf2 : array[0..100]of Char
Buf22 : array[0..100]of Char
上面的过程是对字符串的,就是入口参数和出口参数是字符串,现在想把入口参数和出口参数变为数组,即buf1入口buf11出口,buf2入口buf22出口,我以前没用过,改了不行,请高手帮忙改一下。
procedure EncyNDecy(const ASrc: string; var ADest: string;
const AOpt: Integer);
var
I: Integer;
BB: Byte;
begin
SetLength(ADest, Length(ASrc));
case AOpt of
1: begin // 加密
for I := 1 to Length(ASrc) do begin
BB := Byte(ASrc[I]) xor $9F;
BB := (BB shr 4) or ((BB and $F) shl 4);
ADest[I] := Char(BB);
end;
end;
2: begin // 解密
for I := 1 to Length(ASrc) do begin
BB := Byte(ASrc[I]);
BB := ((BB shr 4) and $F) or ((BB and $F) shl 4);
BB := BB xor $9F;
ADest[I] := Char(BB);
end;
end;
end;
end现在有2对数组:
Buf1 : array[0..400]of Char
Buf11 : array[0..400]of Char
Buf2 : array[0..100]of Char
Buf22 : array[0..100]of Char
上面的过程是对字符串的,就是入口参数和出口参数是字符串,现在想把入口参数和出口参数变为数组,即buf1入口buf11出口,buf2入口buf22出口,我以前没用过,改了不行,请高手帮忙改一下。
var
Ch:pchar;
begin
ch := Dest;
case AOpt of
1: begin // 加密
while Source^ <> #0 do
begin
BB := Byte(Source^) xor $9F;
BB := (BB shr 4) or ((BB and $F) shl 4);
ch^ := Char(BB);
inc(ch);
inc(Source);
end;
ch^ := #0;
end;
2: begin // 解密
while Source^ <> #0 do
begin
BB := Byte(Source^);
BB := ((BB shr 4) and $F) or ((BB and $F) shl 4);
BB := BB xor $9F;
ch^ := Char(BB);
inc(ch);
inc(Source);
end;
end;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
var
dest : pchar;
begin
dest := StrAlloc(30);
try
EncyNDecy(Pchar(edit5.Text),dest,123,1);
edit6.Text :=string(dest);
finally
StrDispose(dest);
end;
end;procedure TForm1.Button3Click(Sender: TObject);
var
dest : pchar;
begin
dest := StrAlloc(30);
try
EncyNDecy(Pchar(edit5.Text),dest,123,2);
edit6.Text :=string(dest);
finally
StrDispose(dest);
end;
end;
var
Ch:pchar;
begin
ch := Dest;
case AOpt of
1: begin // 加密
while Source^ <> #0 do
begin
BB := Byte(Source^) xor $9F;
BB := (BB shr 4) or ((BB and $F) shl 4);
ch^ := Char(BB);
inc(ch);
inc(Source);
end;
end;
2: begin // 解密
while Source^ <> #0 do
begin
BB := Byte(Source^);
BB := ((BB shr 4) and $F) or ((BB and $F) shl 4);
BB := BB xor $9F;
ch^ := Char(BB);
inc(ch);
inc(Source);
end;
end;
end;
ch^ := #0;
end;