就是程序在保存的时候会把一些中文文本存到本地   
但是通过其他程序打不开,就算打开也是一堆乱码然后程序再次运行的时候把本地的乱码又恢复成中文文本怎么实现啊

解决方案 »

  1.   

    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;
      

  2.   

    http://download.csdn.net/detail/a215107822/4174069我的资源,你可以下过来看看
      

  3.   

    把文本导入,转换成DAT格式的文件不就是了。
    使用方法:文件方式存取
      

  4.   

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

  5.   

    Indy 自带了一堆的控件 。有一个叫 Base64 的 加密和解密的。
    你可以试试