从文件中还原加密后的文本

luincnyou 2008-08-27 04:25:10
电脑中有一个文件,是经过下面代码加密的一个纯文本文件

procedure CodeBuf(var Buf: array of byte; BufSize: integer; Password: string);
begin
...
在此处理Buf的内容
...
end;

现在想把这个文件的内容读取到memo中(不用写入文件),怎么实现呢(已有解密函数UnCodeBuf,参数和CodeBuf相同)?
...全文
84 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
王集鹄 2008-09-07
  • 打赏
  • 举报
回复
参考如下代码:
procedure CodeBuf(var Buf: array of byte; BufSize: integer; Password: string);
var
I: Integer;
begin
if Password = '' then Exit;
for I := 0 to BufSize - 1 do
Buf[I] := Buf[I] xor Ord(Password[I mod Length(Password) + 1]);
end;

procedure UnCodeBuf(var Buf: array of byte; BufSize: integer; Password: string);
var
I: Integer;
begin
if Password = '' then Exit;
for I := 0 to BufSize - 1 do
Buf[I] := Buf[I] xor Ord(Password[I mod Length(Password) + 1]);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
A: array of Byte;
S: string;
begin
// 写入
S := Memo1.Text;
if S = '' then Exit;
SetLength(A, Length(S));
Move(S[1], A[0], Length(S));
CodeBuf(A, Length(A), 'zswang 路过');
with TMemoryStream.Create do try
Write(A[0], Length(A));
SaveToFile('c:\temp\temp.dat');
finally
Free;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
A: array of Byte;
S: string;
begin
// 读取
if not FileExists('c:\temp\temp.dat') then Exit;
with TMemoryStream.Create do try
LoadFromFile('c:\temp\temp.dat');
SetLength(A, Size);
Read(A[0], Size);
UnCodeBuf(A, Length(A), 'zswang 路过');
SetLength(S, Size);
Move(A[0], S[1], Size);
Memo2.Text := S;
finally
Free;
end;
end;
luincnyou 2008-09-06
  • 打赏
  • 举报
回复
To:fangsp
谢谢回答,可是不是这个意思。
我想把普通的文本文件转化成二进制文件(方法随便),也可以把二进制文件还原成文本文件到Memo控件中(这个过程不要在磁盘中生成临时文件),该怎么做呢?
fangsp 2008-08-28
  • 打赏
  • 举报
回复
Memo1.LoadFile('文件名');
这样就可以了
你试一下

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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