请帮忙修改一个过程,急在线等

iranjn 2005-09-01 12:39:25
原过程为
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出口,我以前没用过,改了不行,请高手帮忙改一下。
...全文
55 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
leonkim 2005-09-01
  • 打赏
  • 举报
回复
BB:应该是密钥吧,我把它做成了参数。

写的匆忙,还有些地方需要改进,比如说:传入参数的非法判断
楼主自己改吧。
leonkim 2005-09-01
  • 打赏
  • 举报
回复
procedure TForm1.EncyNDecy(Source, Dest: pchar;BB:byte;AOpt: Integer);
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;
leonkim 2005-09-01
  • 打赏
  • 举报
回复
procedure TForm1.EncyNDecy(Source, Dest: pchar;BB:byte;AOpt: Integer);
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;
cjf1009 2005-09-01
  • 打赏
  • 举报
回复
你可以把数组直接赋值给字符串,带到这个函数里嘛
我觉得用数组参数还麻烦些。

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧