读书人

delphi把文本写下二进制文件

发布时间: 2012-12-29 10:28:09 作者: rapoo

delphi把文本写入二进制文件
就是程序在保存的时候会把一些中文文本存到本地
但是通过其他程序打不开,就算打开也是一堆乱码

然后程序再次运行的时候把本地的乱码又恢复成中文文本

怎么实现啊
[解决办法]
以内存流方式写入即可
[解决办法]
procedure TForm1.Button1Click(Sender: TObject);
var
mstrean:TMemoryStream;
SS:TStringStream;
begin
mstrean:=TMemoryStream.Create;
SS:=TStringStream.Create('');
mstrean.LoadFromFile('D:\cst-Desktop\1.txt'); //加载文本的流
EncodeStream(mstrean,SS); //将文本流转换成字符串
memo1.Text:=SS.DataString; //我这里暂时输出到Memo1中
end;

procedure TForm1.Button2Click(Sender: TObject);
var
mstrean:TMemoryStream;
SS:TStringStream;
begin
mstrean:=TMemoryStream.Create;
SS:=TStringStream.Create(Memo1.Text); //加载Memo1中转换过的流
DecodeStream(SS,mstrean); //将Memo1中的流字符串转换成流
mstrean.SaveToFile('D:\cst-Desktop\2.txt'); //最后流输出,和原来的文件对比,是一样的。
end;
[解决办法]

引用:
用MD5加密,或者用加密压缩的方法也可以。

MD5加密貌似是单向的,程序再次打开貌似解密不回来吧,呵呵。
2楼说的以内存流方式写入,是种可行的方案,但需要将写入的内容做些简单的转换才行。
例如,如果要写入的内存流为 41 31 C2 EB (为16进制表示的'A1码'),在写入时,将每个字节与任意字符(这里我们用T)做异或,得到新的内存流 15 65 96 BF ('e')看起来就是乱码了。
在读出时,将内存流与同一个字符再做次异或,数据就还原了。
[解决办法]
这个可以……
引用:
procedure TForm1.Button1Click(Sender: TObject);
var
mstrean:TMemoryStream;
SS:TStringStream;
begin
mstrean:=TMemoryStream.Create;
SS:=TStringStream.Create('');
mstrean.LoadFromFile('D……

读书人网 >.NET

热点推荐