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.
    
  • 相关阅读:
    [导入]mootools框架【二】Core篇: 主要方法测试实例
    公司招聘中不能说的秘密 【转载】
    国外10个ASP.Net C#下的开源CMS
    [导入][Flash开发笔记] List控件删除指定label或data的项
    [导入]用C#截取指定长度的中英文混合字符串 改进版
    今天小侄子出生,想了一天的名字
    一个正则表达式的解释
    今日小收获
    昨天的事
    两点东西
  • 原文地址:https://www.cnblogs.com/del/p/1022343.html
Copyright © 2011-2022 走看看