首页 > 其他分享 >delphi model序列和还原

delphi model序列和还原

时间:2023-06-15 16:45:27浏览次数:50  
标签:function aRecord const delphi value 序列 end model class

delphi model序列和还原

封装了json和protobuf。

unit serialize;
/// <author>cxg 2022-8-30</author>

interface

uses
  System.SysUtils, Grijjy.ProtocolBuffers, System.JSON.Serializers;

type
  TSerial = class
  public
    //unmarshal
    class function unmarshal<T: record>(const value: string): T; overload; //json
    class function unmarshal<T: record>(const value: tbytes): T; overload; //protobuf
    //marshal
    class function marshal<T: record>(const aRecord: T): string;   //json
    class function marshal2<T: record>(const aRecord: T): TBytes;  //protobuf
  end;

implementation

class function TSerial.marshal<T>(const aRecord: T): string;
begin
  var s: TJsonSerializer := TJsonSerializer.Create;
  try
    Result := s.Serialize<T>(aRecord);
  finally
    s.Free;
  end;
end;

class function TSerial.unmarshal<T>(const value: string): T;
begin
  var s: TJsonSerializer := TJsonSerializer.Create;
  try
    Result := s.Deserialize<T>(value);
  finally
    s.free;
  end;
end;

class function TSerial.marshal2<T>(const aRecord: T): TBytes;
begin
  var s: TgoProtocolBuffer := TgoProtocolBuffer.Create;
  try
    Result := s.Serialize<T>(aRecord);
  finally
    s.Free;
  end;
end;

class function TSerial.unmarshal<T>(const value: tbytes): T;
begin
  var s: TgoProtocolBuffer := TgoProtocolBuffer.Create;
  try
    s.Deserialize<T>(result, value);
  finally
    s.Free;
  end;
end;

end.

  

标签:function,aRecord,const,delphi,value,序列,end,model,class
From: https://www.cnblogs.com/hnxxcxg/p/17483322.html

相关文章

  • delphi7使用QuickReport快速生成报表
    QuickReport报表组件是Delphi7之前版本广泛使用的数据库报表设计工具组件,在Delphi7版本中默认没有加载在Delphi7的工具栏上。因此,需要手动安装加载一下,安装QReport组件插件步骤如下:①在Delphi7中执行菜单[Component]==>[InstallPackages...];②点击按钮[Add...],出现‘AddDesi......
  • TDSQL产品序列理解
    为了增强战斗力和品牌识别度,腾讯把他们的数据库做了一次整合,原来的各种数据库揉在一起成了一个新产品线,分别叫TDSQL-A、TDSQL-C、TDSQL。每个产品是干嘛的?太乱了。谁看得懂这背后到底是几个数据库?作为阿里的同学,把它们大致对标成阿里系的产品,理解起来会简单一些:阿里腾讯分析ADBTD......
  • 016 数据库学习笔记--序列
    序列:获取唯一值,序列不支持事务回滚,会出现跳号SQLServer序列是一种逐步增加的命名的唯一的索引,它可以将一个整数标示符与一个数据行关联起来,并可保证该索引特别唯一。凭借这一特性,序列对于对数据进行安全且按照某种有意义的排序进行保存的场景非常有用。序列是一种用户定义的架......
  • 如何使用libavcodec将.yuv图像序列编码为.h264的视频码流?
    1.实现打开和关闭输入文件和输出文件的操作点击查看代码//io_data.cppstaticFILE*input_file=nullptr;staticFILE*output_file=nullptr;int32_topen_input_output_files(constchar*input_name,constchar*output_name){if(strlen(input_name)==0||strlen(ou......
  • 算法题总结-最长回文序列
    原题https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1?tpId=37&tqId=21255&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3Fdifficulty%3D3%26page%3D1%26pageSize%3D50%26search%3D%26tpId%3D37%26type%3D37&am......
  • RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测|附代码数据
    在Tensorflow之上运行的综合库,具有CPU和GPU功能本文将演示如何在R中使用LSTM实现时间序列预测。简单的介绍时间序列涉及按时间顺序收集的数据。我用xt∈R表示单变量数据,其中t∈T是观察数据时的时间索引。时间t在T=Z的情况下可以是离散的,或者在T=R的情况下......
  • C++ 中 Concept-Model 概念模型
    此文档参考自:https://gracicot.github.io/conceptmodel/2017/09/13/concept-model-part1.html,觉得很有趣,就翻译过来了一、Concept-Model:多态的新视角面向对象编程大家都很熟悉,只需实现一个接口Interface。但这种使用经典OOP实现的多态性是侵入性的,即使在真正不需要的地方......
  • 挑战数据结构和算法——栈的push、pop序列
    题目来源“数据结构与算法面试题80道”。在此给出我的解法,如你有更好的解法,欢迎留言。问题分析:本题考查栈的基本操作,栈是一种“先进后出”的数据结构。判断一个序列是否是栈的pop序列是一种常见的问题,可以通过模拟push和pop的过程,push和pop总是成对出现的,如:方法:#definepush1#def......
  • 为什么RLHF中,PPO需要Critic模型而不是直接使用RewardModel
    在强化学习中,PPO(ProximalPolicyOptimization)算法是一种基于策略梯度的方法,用于训练强化学习智能体。PPO算法中引入Critic模型的主要目的是为了提供一个价值估计器,用于评估状态或状态动作对的价值,从而辅助策略的更新和优化。虽然奖励模型(RewardModel)可以提供每个状态或状态动作......
  • 识别一切模型RAM(Recognize Anything Model)及其前身 Tag2Text 论文解读
    总览大家好,我是卷了又没卷,薛定谔的卷的AI算法工程师「陈城南」~担任某大厂的算法工程师,带来最新的前沿AI知识和工具,欢迎大家交流~继MetaAI的SAM后,OPPO研究院发布识别一切模型(RecognizeAnythingModel,RAM):项目链接:https://recognize-anything.github.io/Demo链接:https://hugging......