咏南数据序列(还原)类

咏南数据序列(还原)类

1)不基于任何三方商业控件,无任何版权纠纷。

2)通过“节点”标示不同的对象和数据集数据,一次可序列(还原)N个对象和数据集的数据,主从表数量不限。

3)使用GZIP压缩数据后,再进行网络传输。

4)序列(还原)支持跨操作系统。

5)序列(还原)的接口非常简单。

6)数据集数据可使用的序列格式:bin、json、xml,默认使用bin格式。

7)支持TCP\WEBSOCK\HTTP\HTTPS各种通讯控件进行数据序列(还原)。

先上图:

支持对象的序列和还原:

type
  {$M+}
  TTest = class
  private
    fid: Integer;
    fname2: string;
  published
    property id: Integer read fid write fid;
    property name2: string read fname2 write fname2;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses DataSequence;

procedure TForm1.Button1Click(Sender: TObject);
var
  t, t2: TTest;
  d, d2: TynDataSequence;
  ms: TMemoryStream;
begin
  // 序列
  t := TTest.Create;
  t2 := TTest.Create;
  ms := TMemoryStream.Create;
  d := TynDataSequence.Create(ms);
  t.id := 1;
  t.name2 := 'name';
  d.WriteObject('node1', t);
  // 还原
  d2 := TynDataSequence.Create(ms);
  d2.ReadObject('node1', t2);
  Memo1.Lines.Add(t2.id.ToString);
  Memo1.Lines.Add(t2.name2);
  // 释放
  t.Free;
  t2.Free;
  ms.Free;
  d.Free;
  d2.Free;
end;

  支持客户端FDMemTable内存表的序列和还原:

procedure TForm1.Button2Click(Sender: TObject);
var
  d, d2: TynDataSequence;
  ms: TMemoryStream;
begin
  // 序列
  ms := TMemoryStream.Create;
  d := TynDataSequence.Create(ms);
  d.WriteFDDataSet('node1', 'key1', FDQuery1);
  // 还原
  d2 := TynDataSequence.Create(ms);
  d2.ReadFDDataSet('node1', 'key1', FDMemTable1);
  DataSource1.DataSet := FDMemTable1;
  // 释放
  ms.Free;
  d.Free;
  d2.Free;
end;

 支持客户端ClientDataSet内存表的序列和还原:

procedure TForm1.Button3Click(Sender: TObject);
var
  d, d2: TynDataSequence;
  ms: TMemoryStream;
begin
  // 序列
  ms := TMemoryStream.Create;
  d := TynDataSequence.Create(ms);
  d.WriteOleVariant('node1', 'key1', DataSetProvider1.Data);
  // 还原
  d2 := TynDataSequence.Create(ms);
  d2.ReadOleVariant('node1', 'key1', ClientDataSet1);
  DataSource1.DataSet := ClientDataSet1;
  // 释放
  ms.Free;
  d.Free;
  d2.Free;
end;

  

猜你喜欢

转载自www.cnblogs.com/hnxxcxg/p/10400389.html