zoukankan      html  css  js  c++  java
  • ParamsToVariant and VariantToParams

     function ParamsToVariant(Params: TParams; Macro, Compatible: Boolean): Variant;
    var
      I: Integer;
      Tmp: Variant;
    begin
      if (Params.Count = 0) then
        Result := Null
      else begin
        Result := VarArrayCreate([0, Params.Count - 1], varVariant);
        for I := 0 to Params.Count - 1 do
          with Params[I] do
          begin
            if Compatible then
              Tmp := VarArrayOf([Name, Unassigned, Unassigned, Unassigned]) else
              Tmp := VarArrayOf([Name, Unassigned, Unassigned, Unassigned, Macro]);
            Tmp[3 - 2 * ord(Compatible)] := Value;
            Tmp[1 + ord(Compatible)] := Ord(DataType);
            Tmp[2 + ord(Compatible)] := Ord(ParamType);
            Result[I] := Tmp;
          end;
      end;
    end;

    procedure VariantToParams(const VarParams: Variant; Params: TParams; Compatible: Boolean);
    var
      I: Integer;
      Param: TParam;
    begin
      Params.Clear;

      if not VarIsNull(VarParams) then
        for I := 0 to VarArrayHighBound(VarParams, 1) do
        begin
          Param := Params.CreateParam(
            TFieldType(VarParams[I][1 + ord(Compatible)]),
            VarParams[I][0],
            TParamType(VarParams[I][2 + ord(Compatible)]));

          Param.DataType := TFieldType(VarParams[I][1 + ord(Compatible)]);
          if VarIsNull(VarParams[I][3 - 2 * ord(Compatible)]) or VarIsEmpty(VarParams[I][3 - 2 * ord(Compatible)]) then
            Param.Clear else Param.Value := VarParams[I][3 - 2 * ord(Compatible)];
        end;
    end;

  • 相关阅读:
    ES6 Symbol数据类型和set-map 数据结构
    ES6的字符串和数值的扩展
    获取当前的网络状态
    节流阀
    stellar.js 视差滚动
    h5新增标签及css3新增属性
    vue中使用mui滑动条无法正常滑动
    用css3画有边框的三角形
    多个选项选中某一个的效果(用到siblings()方法)
    消除移动端按钮或者输入框等点击时出现边框
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2940578.html
Copyright © 2011-2022 走看看