oleVariant序列化物件

2021-09-07 22:27:56 字數 2602 閱讀 9250

midas支援使用olevariant序列化物件,最新的datasnap支援使用olevaraint和json來序列化物件。

下面的**演示olevarinat序列化tparams, tparameters物件。olevariant本質上是乙個byte陣列。

還原tparams物件

procedure varianttoparams(input:olevariant;par:tparams);

// tparam 's property: fieldtype, paramname, paramtype, value, size

// paramtype default value ptinput

// size = sizeof(value)

varn, i:integer;

begin

tryn:=0;

i:=0;

par.clear;

while vararrayhighbound(input,1)>=(n+3)do

begin

par.createparam(tfieldtype(input[n+1]),input[n+2],ptinput);

par.items[i].value := input[n+3];

par.items[i].size :=sizeof(input[n+3]);

n:=n+3;

i:=i+1;

end;

except

exit;

end;

end;

序列化tparams物件

function paramstovariant(par:tparams): olevariant;

// tparam 's property: fieldtype, paramname, paramtype, value, size

// paramtype default value ptinput

// size = sizeof(value)

vartmpv:olevariant;

n,i:integer;

begin

trytmpv:=vararraycreate([1,par.count*3],varvariant);

n:=0;

i:=0;

while par.count>i do

begin

tmpv[n+1]:=ord(par.items[i].datatype);    

tmpv[n+2]:=par.items[i].name;

tmpv[n+3]:=par.items[i].value;

i:=i+1;

n:=n+3;

end;

result:=tmpv;

except

exit;

end;

end;

還原tparameters

procedure varianttoparameters(input:olevariant;par:tparameters);

// tparameters's property: name, datatype, direction, size, value

// direction default pdinput

// size = sizeof(value)

varn:integer;

begin

tryn:=0;

par.clear;

while vararrayhighbound(input,1)>=(n+3)do

begin

par.createparameter(input[n+1],tfieldtype(input[n+2]),pdinput,sizeof(input[n+3]),input[n+3]);

n:=n+3;

end;

except

exit;

end;

end;

序列tparameters物件

function parameterstovariant(par:tparameters): olevariant;

// tparameters's property: name, datatype, direction, size, value

// direction default pdinput

// size = sizeof(value)

vartmpv:olevariant;

n,i:integer;

begin

trytmpv:=vararraycreate([1,par.count*3],varvariant);

n:=0;

i:=0;

while par.count>i do

begin

tmpv[n+1]:=par.items[i].name;

tmpv[n+2]:=ord(par.items[i].datatype);

tmpv[n+3]:=par.items[i].value;

i:=i+1;

n:=n+3;

end;

result:=tmpv;

except

exit;

end;

物件序列化 反序列化

必須新增引用 using system.io using system.runtime.serialization using system.runtime.serialization.formatters.binary 方法 region 物件序列化 物件序列化 任意物件 字串 public st...

物件 序列化 反序列化

public class eventmessage 資訊提示類 型別1 操作日誌2 安全日誌 標題 內容 icon型別 url 執行script指令碼字串 需加 public static void messagebox int m type,string m title,string m body...

物件序列化

using system using system.io using system.diagnostics using system.reflection using system.runtime.serialization using system.runtime.serialization.fo...