电脑中有一个文件,是经过下面代码加密的一个纯文本文件procedure CodeBuf(var Buf: array of byte; BufSize: integer; Password: string);
begin
...
在此处理Buf的内容
...
end;现在想把这个文件的内容读取到memo中(不用写入文件),怎么实现呢(已有解密函数UnCodeBuf,参数和CodeBuf相同)?
begin
...
在此处理Buf的内容
...
end;现在想把这个文件的内容读取到memo中(不用写入文件),怎么实现呢(已有解密函数UnCodeBuf,参数和CodeBuf相同)?
这样就可以了
你试一下
谢谢回答,可是不是这个意思。
我想把普通的文本文件转化成二进制文件(方法随便),也可以把二进制文件还原成文本文件到Memo控件中(这个过程不要在磁盘中生成临时文件),该怎么做呢?
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;