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)
        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/

  • 相关阅读:
    打包成exe可执行文件的方法
    Html 重要单词归纳
    python基础---递归函数 知识点自查填空题
    python基础---内置函数 和 匿名函数 知识点自查填空题
    python基础---递归函数真题解析
    python 日记 day4。
    python 日记 day5 字典
    python 日记 day3
    python 日记 day4
    python 日记 day1
  • 原文地址:https://www.cnblogs.com/huangcong/p/1875085.html
Copyright © 2011-2022 走看看