Delphi 序列化 和 反序列化

来源:互联网 发布:java 表达式引擎 编辑:程序博客网 时间:2024/06/11 02:06
Delphi中序列化的方法。读:[delphi] view plaincopyprint?function TStream.ReadComponentRes(Instance: TComponent): TComponent;  function TStream.ReadComponentRes(Instance: TComponent): TComponent;写:[delphi] view plaincopyprint?procedure TStream.WriteComponentRes(const ResName: string; Instance: TComponent);  procedure TStream.WriteComponentRes(const ResName: string; Instance: TComponent);本想用序列化实现语言切换,可发现序列化后的文件跟乱码一样。不知道怎么可以保存的跟INI文件一样整齐好维护(不知道怎么实现)。不过还是有点用,可以将界面录入的数据先保存起来,下次在加载接着录。呵呵。源码如下:[delphi] view plaincopyprint?{ 序列化 (serialization):将对象的状态信息转换为可以存储或传输的形式的过程。 与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。 序列化的目的   1、以某种存储形式使自定义对象持久化;   2、将对象从一个地方传递到另一个地方。   3、使程序更具维护性 在Delphi中 只要从 TPersistent继承后就会有序列化的功能。 在TPersistent中的定义 procedure DefineProperties(Filer: TFiler); virtual; }  unit Unit1;    interface    uses    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    Dialogs, StdCtrls;    type    TForm1 = class(TForm)      Btn1: TButton;      Btn2: TButton;      Edit1: TEdit;      LB1: TLabel;      mmo1: TMemo;      procedure Btn2Click(Sender: TObject);      procedure FormCreate(Sender: TObject);      procedure Btn1Click(Sender: TObject);    private      SYS_PATH: string;    public      end;    var    Form1: TForm1;    implementation    {$R *.dfm}    procedure TForm1.Btn1Click(Sender: TObject);  var    ts: TStream;    i: integer;  begin //反序列化     ts := TFileStream.Create(SYS_PATH + 'serialization.txt',fmOpenRead);    for i := 0 to Self.ComponentCount - 1 do      ts.ReadComponentRes(Self.Components[i]);    ts.Free();  end;    procedure TForm1.Btn2Click(Sender: TObject);  var    fs: TFileStream;    i: Integer;  begin //序列化     fs := TFileStream.Create(SYS_PATH + 'serialization.txt', fmCreate);    for i := 0 to Self.ComponentCount - 1 do      fs.WriteComponentRes(Self.Components[i].ClassName, Self.Components[i]);    fs.free();  end;    procedure TForm1.FormCreate(Sender: TObject);  begin    SYS_PATH := ExtractFileDir(Application.ExeName) + '\';  end;    end.  


 

原创粉丝点击