文档章节

关于 Delphi 中流的使用(5) 组件序列化

涂孟超
 涂孟超
发布于 2014/09/26 15:33
字数 288
阅读 2
收藏 0
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.

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/01/01/1022343.html

共有 人打赏支持
上一篇: 动态列表
下一篇: 敬告
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
不在乎y/Duilib for Delphi

###DDuilib 目录 项目介绍 其它说明 初次使用 自行编译 目录详情 Demo截图 作者信息 项目介绍 什么是DDuilib(原名“Duilib for Delphi”)? DDuilib是一个建立在C++开源项目duilib之上,且最...

不在乎y
2015/12/26
0
0
[MyBean-插件]MyBean通用报表免费无限制版本发布

【优点】 1.开发时无需安装报表组件(可以直接用编译好的文件,注意版权说明,请自行编译一次相应的报表插件文件)。 2.无带包烦恼所有版本Delphi都可以使用,不拖累Delphi版本的升级。 3.可以实...

天地弦
2015/06/06
0
0
SQLite for Delphi的网友评论

SQLite的一个Delphi的开源封装库,全面支持Delphi 4, 5, 6, 7, 2005 和 2006。对于Delphi 4和Delphi 5请使用带有D4、D5后缀的文件。解压缩下载回来的文件包到Delphi的子目录下,安装该组件,...

红薯
2009/12/11
1K
2
SQLite for Delphi

SQLite的一个Delphi的开源封装库,全面支持Delphi 4, 5, 6, 7, 2005 和 2006。对于Delphi 4和Delphi 5请使用带有D4、D5后缀的文件。解压缩下载回来的文件包到Delphi的子目录下,安装该组件,...

匿名
2008/10/06
12.3K
1
Delphi XE2:这就是我们所期待的Delphi吗?

版权声明:本文为 OSChina.NET 原创编译 转载务必注明出处,并保留链接! 作者:蒂姆.安德森 Delphi是被一些人遗忘了的快速应用程序开发工具,但它与可视组件库相结合,依然是开发Windows本机...

虫虫
2011/10/31
40.7K
49

没有更多内容

加载失败,请刷新页面

加载更多

聊聊flink的Async I/O

序 本文主要研究一下flink的Async I/O 实例 // This example implements the asynchronous request and callback with Futures that have the// interface of Java 8's futures (which is t......

go4it
18分钟前
0
0
一文详解微服务架构的数据设计

微服务是一个软件架构模式,对微服务的讨论大多集中在容器或其他技术是否能很好的实施微服务这些方面。 本文将从以下几个角度来和大家分享在微服务架构下进行数据设计需要关注的地方,旨在帮...

java菜分享
28分钟前
3
0
Java并发编程之美读书笔记-并发编程基础1

线程 进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,比如idea运行代码时的jvm是一个进程,但是CPU资源比较特殊,它是被分配到线程的,线程是进程的一个执行路...

hensemlee
41分钟前
1
0
【剑指offer纪念版】--10 进制1的个数

10. 题目 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。 解题思路   把一个整数减去1,再和原整...

细节探索者
56分钟前
2
0
本科毕业平均年薪 30 万!经济寒冬挡不住 AI 人才的火热!

互联网行业遭遇寒冬,企业纷纷裁员缩招,而 BAT 和硅谷明星公司对 AI 人才的投入却并不见放缓。为争夺相关人才,给应届毕业生开出的平均年薪高达 30 万。 而 TensorFlow 作为当下最流行的深度...

AI女神
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部