咏南数据序列(还原)类
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;