msgpack和TParams互相转换

msgpack和TParams互相转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
procedure msgpack2params(const Source: TMsgPack; Dest: TParams);
var
  ps: TParams;
  p: TParam;
  i: Integer;
begin
  ps := TParams.Create;
  try
    for i := 0 to Source.Count - 1 do
    begin
      p := TParam(ps.add);
      p.Value := Source.Items[i].AsVariant;
    end;
    Dest.Assign(ps);
  finally
    ps.Free;
  end;
end;
 
function params2msgpack(Params: TParams; Types: TParamTypes = AllParamTypes): TMsgPack;
var
  I, Count: Integer;
  p: TParam;
begin
  Result := TMsgPack.Create;
  Count := 0;
  for I := 0 to Params.Count - 1 do
    if Params[I].ParamType in Types then
      Inc(Count);
  if Count > 0 then
  begin
    for I := 0 to Params.Count - 1 do
    begin
      p := Params[I];
      if p.ParamType in Types then
        Result.Force(p.Name).AsVariant := p.Value;
    end;
  end;
end;

  

posted @   delphi中间件  阅读(207)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2016-05-17 delphi 10.1 berlin datasnap提交clientdataset.delta报:invalid variant type conversion(类型转换错误)问题的解决
2016-05-17 FIREDAC的TFDJSONDataSets和TFDJSONDeltas查询和提交数据
2015-05-17 论游戏的架构
点击右上角即可分享
微信分享提示