zoukankan      html  css  js  c++  java
  • 关于 Delphi 中流的使用(5) 组件序列化

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    //添加一个 Memo1 然后修改其内容
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      WriteComponentResFile('c:\temp\memo.dat', Memo1);
      {只此一句就可以把当前的 Memo 的状态序列化到文件}
    end;
    
    
    //反序列化, 读回
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      ReadComponentResFile('c:\temp\memo.dat', Memo1);
      {一句话就可以读回, 不管是经过了什么操作(甚至是关机)}
    end;
    
    
    {
      这好像和流没什么关系, 其实这就是流的典型操作,
      WriteComponentResFile 和 ReadComponentResFile 分别调用了流类的
      WriteComponentRes 与 ReadComponentRes 方法.
      下面用更直接的流的方式重新实现一次:
    }
    
    
    //序列化
    procedure TForm1.Button3Click(Sender: TObject);
    var
      stream: TStream;
    const
      strPath = 'c:\temp\m.dat';
    begin
      stream := TFileStream.Create(strPath, fmCreate);
      stream.WriteComponentRes(Memo1.ClassName, Memo1);
      {WriteComponentRes 有两个参数: 文件名和组件名}
      stream.Free;
    end;
    
    
    //反序列化
    procedure TForm1.Button4Click(Sender: TObject);
    var
      stream: TStream;
    const
      strPath = 'c:\temp\m.dat';
    begin
      stream := TFileStream.Create(strPath, fmOpenRead);
      stream.ReadComponentRes(Memo1);
      {ReadComponentRes 只有一个参数: 组件名}
      stream.Free;
    end;
    
    end.
    
  • 相关阅读:
    php原生PHPExcel插件导表(附表格合并,加粗居中及加边框换行操作)
    VMware虚拟机基于contos 7 搭建lnmp环境全过程
    菜鸟学git的基本命令及常见错误
    为什么要写blog????
    JavaScript高级程序设计--函数小记
    jsapi微信支付
    Javascript模式小记(一)
    图片的增删查
    图形的滚动及颜色区域的拉移
    网页中的宽与高
  • 原文地址:https://www.cnblogs.com/del/p/1022343.html
Copyright © 2011-2022 走看看