首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi把文本写下二进制文件

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

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……

热点排行