zoukankan      html  css  js  c++  java
  • oleVariant序列化对象

    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)
    var
      n, i:integer;
    begin
      try
        n:=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)
    var
      tmpv:OleVariant;
      n,i:integer;
    begin
      try
        tmpv:=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)
    var
      n:integer;
    begin
      try
        n:=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)
    var
      tmpv:OleVariant;
      n,i:integer;
    begin
      try
        tmpv:=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;

  • 相关阅读:
    ObjectArx的一次常用方法
    GDI+ 简介(1)
    VC++获取可执行文件当前目录
    SQL Server 常用的时间处理函数
    利于Wininet创建一个FTP客户端的步骤
    Win32 文件操作的几个API
    ObjectARX中三维多段线转二维多段线的方法
    fas文件格式解析
    [转载]swf文件格式解析(一)
    [转载]swf文件格式解析(二)
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2368590.html
Copyright © 2011-2022 走看看