源代码: ---------------------------------------------------------------------------------
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/
|
请发表评论