詠南資料序列 還原 類

2022-06-06 16:33:10 字數 4864 閱讀 2234

詠南資料序列(還原)類

支援序列(還原)的型別:除了支援所有基本的資料型別(integer, string, datetime, date, time,float),還支援 物件、結構體、資料集資料

1)不基於任何三方商業控制項,無任何版權糾紛。

2)通過「節點」標示不同的物件和資料集資料,一次可序列(還原)n個物件和資料集的資料,主從表數量不限。

3)使用gzip壓縮資料後,再進行網路傳輸。

4)序列(還原)支援跨作業系統。

5)序列(還原)的介面非常簡單。

6)資料集資料可使用的序列格式:bin、json、xml,預設使用bin格式。

7)支援tcp\websock\http\https各種通訊控制項進行資料序列(還原)。

先上圖:

//序列 還原物件

var t, t2: ttest;

d, d2: tynserial;

ms: tmemorystream;

begin

// 序列

t := ttest.create;

t2 := ttest.create;

ms := tmemorystream.create;

d := tynserial.create(ms);

t.id := 1;

t.name2 := '物件';

d.writeobject('node1', t);

d.prepareserial;

// 還原

d2 := tynserial.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;

procedure tform1.button2click(sender: tobject);

//序列 還原 firedac資料集

var d, d2: tynserial;

ms: tmemorystream;

ms2: tmemorystream;

begin

// 序列

ms := tmemorystream.create;

ms2 := tmemorystream.create;

d := tynserial.create(ms);

// 序列資料集1

fdquery1.close;

fdquery1.sql.clear;

fdquery1.sql.add('select * from tgoods');

fdquery1.open;

d.writefddataset('node1', 'dataset1', fdquery1);

// 序列資料集2

fdquery1.close;

fdquery1.sql.clear;

fdquery1.sql.add('select * from tunit');

fdquery1.open;

d.writefddataset('node1', 'dataset2', fdquery1);

// 序列基本型別

d.writestring('node1', 'str', '字串');

d.writeinteger('node2', 'int', 258);

// 準備

d.prepareserial;

// 壓縮

ms.position := 0;

zcompressstream(ms, ms2);

// 解壓

ms2.position := 0;

ms.clear;

zdecompressstream(ms2, ms);

//還原

d2 := tynserial.create(ms);

// 還原資料集1

d2.readfddataset('node1', 'dataset1', fdmemtable1);

datasource1.dataset := fdmemtable1;

// 還原資料集2

d2.readfddataset('node1', 'dataset2', fdmemtable2);

datasource2.dataset := fdmemtable2;

// 還原基本型別

memo1.lines.add(d2.readstring('node1', 'str', ''));

memo1.lines.add(d2.readinteger('node2', 'int', 0).tostring);

// 釋放

ms.free;

ms2.free;

d.free;

d2.free;

end;

procedure tform1.button3click(sender: tobject);

//序列 還原datasetprovider1.data

var d, d2: tynserial;

ms: tmemorystream;

ms2: tmemorystream;

begin

// 序列

ms := tmemorystream.create;

ms2 := tmemorystream.create;

d := tynserial.create(ms);

fdquery1.close;

fdquery1.sql.clear;

fdquery1.sql.add('select * from tgoods');

d.writeolevariant('node1', 'dataset', datasetprovider1.data);

d.prepareserial;

ms.position := 0;

zcompressstream(ms, ms2); // 壓縮

// 還原

ms2.position := 0;

ms.clear;

zdecompressstream(ms2, ms); // 解壓

d2 := tynserial.create(ms);

d2.readolevariant('node1', 'dataset', clientdataset1);

datasource1.dataset := clientdataset1;

// 釋放

ms.free;

ms2.free;

d.free;

d2.free;

end;

procedure tform1.button4click(sender: tobject);

//序列還原結構體

var r, r2: trec;

d, d2: tynserial;

ms: tmemorystream;

begin

// 序列

r.id := 1;

r.name2 := '結構體';

ms := tmemorystream.create;

d := tynserial.create(ms);

d.writerecord('node1', 'record', r, sizeof(r));

d.prepareserial;

// 還原

d2 := tynserial.create(ms);

d2.readrecord('node1', 'record', r2, sizeof(r2));

memo1.lines.add(r2.id.tostring);

memo1.lines.add(string(r2.name2));

// 釋放

ms.free;

d.free;

d2.free;

end;

procedure tform1.button5click(sender: tobject);

//序列還原檔案

var d, d2: tynserial;

ms, ms2: tmemorystream;

begin

//序列

ms := tmemorystream.create;

d := tynserial.create(ms);

d.writefile('node1', 'file', extractfilepath(paramstr(0)) + '1.exe');

d.prepareserial;

//壓縮

ms2 := tmemorystream.create;

ms.position := 0;

zcompressstream(ms, ms2);

//解壓

ms.clear;

ms2.position := 0;

zdecompressstream(ms2, ms);

//還原

d2 := tynserial.create(ms);

d2.readfile('node1', 'file', 'd:\1.exe');

//釋放

ms.free;

ms2.free;

d.free;

d2.free;

end;

詠南IOCP中介軟體

詠南iocp中介軟體 特大好訊息,詠南中介軟體系列新增加 詠南iocp中介軟體。詠南iocp中介軟體完全相容詠南datasnap中介軟體的遠端方法介面。中介軟體delphi7 delphi xe10.1.1都能編譯。中介軟體使用unidac資料資料,可以驅動市面上幾乎所有的資料庫。客戶端開發支援de...

詠南IOCP中介軟體

詠南iocp中介軟體 特大好訊息,詠南中介軟體系列新增加 詠南iocp中介軟體。詠南iocp中介軟體完全相容詠南datasnap中介軟體的遠端方法介面。中介軟體delphi7 delphi xe10.1.1都能編譯。中介軟體使用unidac資料資料,可以驅動市面上幾乎所有的資料庫。客戶端開發支援de...

詠南mormot中介軟體

詠南mormot中介軟體 只為使用高併發的windows http.sys通訊,只支援windows伺服器部署,要求win xp sp2 win 2003以上。使用windows http.sys通訊 支援高併發 基於mormot1.18,支援http https soap webservice w...