詠南資料序列(還原)類
支援序列(還原)的型別:除了支援所有基本的資料型別(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...