源代码:
---------------------------------------------------------------------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{$APPTYPE CONSOLE}
var
fPath:string;
constructor TForm1.Create(AOwner: TComponent);
begin
inherited;
memo1.Text:='这好像和流没什么关系, 其实这就是流的典型操作,'+
'WriteComponentResFile 和 ReadComponentResFile 分别调用了流类的'+
'WriteComponentRes 与 ReadComponentRes 方法.'+
'下面用更直接的流的方式重新实现一次';
fPath:=ExtractFilePath(Application.ExeName)+'test.dat';
end;
destructor TForm1.Destroy;
begin
inherited;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WriteComponentResFile(fPath,memo1);
memo1.Clear;
ShowMessage('组件memo1序列保存成功!');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ReadComponentResFile(fPath,memo1);
end;
{
上面的操作好像和流没什么关系, 其实这就是流的典型操作,
WriteComponentResFile 和 ReadComponentResFile 分别调用了流类的
WriteComponentRes 与 ReadComponentRes 方法.
下面用更直接的流的方式重新实现一次:
}
procedure TForm1.Button3Click(Sender: TObject);
var
stream:TStream;
begin
stream:=TFileStream.Create(fPath,fmCreate);
stream.WriteComponentRes(memo1.ClassName,memo1);
//WriteComponentRes方法首先往流中写入标准Windows 资源文件头,
//然后将Instance指定的部件写入流中
//资源文件头可以取任意字符串都可以
//writeln(memo1.classname);
stream.Free;
memo1.Clear;
ShowMessage('组件memo1序列保存成功!');
end;
procedure TForm1.Button4Click(Sender: TObject);
var
stream:TStream;
begin
stream:=TFileStream.Create(fPath,fmOpenRead);
stream.ReadComponentRes(memo1);
stream.Free;
end;
end.
界面代码:
----------------------------------------------------------------------------------------------------
object Form1: TForm1
Left = 1174
Top = 520
Width = 386
Height = 288
Caption = '组件序列化 猪悟能'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Memo1: TMemo
Left = 16
Top = 16
Width = 345
Height = 137
Lines.Strings = (
'Memo1')
TabOrder = 0
end
object Button1: TButton
Left = 24
Top = 168
Width = 153
Height = 25
Caption = 'WriteComponentResFile'
TabOrder = 1
OnClick = Button1Click
end
object Button2: TButton
Left = 192
Top = 168
Width = 153
Height = 25
Caption = 'ReadComponentResFile'
TabOrder = 2
OnClick = Button2Click
end
object Button3: TButton
Left = 24
Top = 208
Width = 153
Height = 25
Caption = 'stream.WriteComponentRes'
TabOrder = 3
OnClick = Button3Click
end
object Button4: TButton
Left = 192
Top = 208
Width = 153
Height = 25
Caption = 'stream.ReadComponentRes'
TabOrder = 4
OnClick = Button4Click
end
end
源代码下载:http://www.rayfile.com/files/ac8f9adc-431e-11df-861a-0015c55db73d/