优秀的数据序列和还原类----TSimpleMsgPack

有了它,从此数据的序列和还原不再是梦魔。

适用极广:可以适用于所有版本的DELPHI,不论D7还是最新的XE10.1,都支持。激动!

封装极简:完全独立的一个单元即可,不需引用任何其它的单元。

用法极简:调用非常简单。

其支持的序列的数据格式非常丰富。

下面列出该类的一些常用的接口方法:

procedure LoadBinaryFromStream(pvStream: TStream; pvLen: cardinal = 0);
procedure SaveBinaryToStream(pvStream:TStream);

procedure LoadBinaryFromFile(pvFileName:String);
procedure SaveBinaryToFile(pvFileName:String);

procedure EncodeToStream(pvStream:TStream);
procedure EncodeToFile(pvFileName:string);

procedure DecodeFromStream(pvStream:TStream);
procedure DecodeFromFile(pvFileName:string);

function EncodeToBytes: TBytes;
procedure DecodeFromBytes(pvBytes:TBytes);

function Add(pvNameKey, pvValue: string): TSimpleMsgPack; overload;
function Add(pvNameKey: string; pvValue: Int64): TSimpleMsgPack; overload;
function Add(pvNameKey: string; pvValue: TBytes): TSimpleMsgPack; overload;
function Add(pvNameKey: String): TSimpleMsgPack; overload;
function Add():TSimpleMsgPack; overload;

function ForcePathObject(pvPath:string): TSimpleMsgPack;

/// <summary>
/// remove and free object
/// false : object is not found!
/// </summary>
function DeleteObject(pvPath:String):Boolean;

property AsInteger:Int64 read getAsInteger write setAsInteger;
property AsString:string read getAsString write setAsString;
property AsBoolean: Boolean read GetAsBoolean write SetAsBoolean;
property AsFloat: Double read GetAsFloat write SetAsFloat;
property AsSingle: Single read GetAsSingle write SetAsSingle;
property AsDateTime: TDateTime read GetAsDateTime write SetAsDateTime;
property AsVariant: Variant read GetAsVariant write SetAsVariant;

property AsBytes: TBytes read GetAsBytes write SetAsBytes;

property O[pvPath: String]: TSimpleMsgPack read GetO write SetO;
property S[pvPath: String]: string read GetS write SetS;
property I[pvPath: String]: Int64 read GetI write SetI;
property B[pvPath: String]: Boolean read GetB write SetB;
property D[pvPath: String]: Double read GetD write SetD;

property Items[AIndex: Integer]: TSimpleMsgPack read GetItems; default;

时间: 2024-08-02 21:23:07

优秀的数据序列和还原类----TSimpleMsgPack的相关文章

关于数据(对象)的序列和还原

有时我们会把对象的序列叫做流化,这很形象.任何对象最终必须被序列成TBYTES,然后才能将它进行网络传输.序列,我们首先要想到三个对象:TOBJECT--TSTREAM--TBYTES.TSTREAM是序列和还原的中间桥梁.许多对象,某些数据集都提供了SAVETOSTREAM()和LOADFROMSTREAM().接下来道破天机:可以说对象流化是非常方便的,流转化为TBYTES也是非常容易的.具体的细节代码,可参考本人的博客上的相关系列文章.

[原创]从Confluence获取html table并将其序列化为C#类文件的工具

公司项目的游戏数据模型文档写在Confluence上,由于在项目初期模型变动比较频繁,手工去将文档中最新的模型结构同步到代码中比较费时费力,而且还很容易出错,于是写了一个小工具来自动化这个同步更新模型到代码中的工作. 如下是一个野怪的数据模型文档: 最终在Unity的C#代码中它会是这个形式: 1 using UnityEngine; 2 using System.Collections; 3 4 public class MonsterData 5 { 6 public int monster

mysql数据的备份还原三种方法

MySQL的备份和恢复: 为什么要对数据做备份?    数据备份主要是用于灾难恢复和测试要求,灾难恢复指硬件故障,软件故障,自然灾害,黑客攻击以及误操作: 备份分为以下几类: 完全备份:既对所有数据做备份 部分备份:仅对数据库中一张或多张表做备份 差异备份:备份上次备份后变化的数据部分,和增量备份区别在于差异备份只可以相对完全备份做备份 增量备份:仅备份上次完全备份或增量备份之后变化的数据部分 热备份:在线备份,读写操作不受影响 温备份:在线备份,读操作继续,但写操作不允许: 冷备份:离线备份,

TynSerial序列(还原)TClientDataSet

可以一次性序列(还原)多个TClientDataSet. 1)TClientDataSet查询数据 procedure TForm1.Qrys(accountno, sql, sql2: string; DataSet, DataSet2: TClientDataSet); // TClientDataSet主从表查询 var url: SockString; i: integer; serial: TynSerial; begin serial := TynSerial.Create; try

mysql中的数据备份与还原

一.有三种备份方式: 1. 数据表文件备份 2. 单表数据备份 3. SQL备份 4. 增量备份 二.mysql中的存储引擎 主要有两种:myisam 和 innodb. -- 免费的 其他收费的还有:BDB, Memory, Archive innodb的存储方式:表结构单独存放,所有数据都存储在ibdata1文件中. myisam的存储方式:表.数据和索引全部单独分开存储. 二.数据表文件备份与还原 直接复制数据库目录下的文件夹复制对应的表结构和数据文件,还原的时候直接放回去即可. 但是此方

DATASNAP数据序列之FIREDAC的TFDJSONDataSets

DELPHI XE5开始增加了新的数据引擎——FIREDAC,它是跨平台的数据引擎,WINDOWS.LINUX.MAC.APP......都可以使用. 随之DATASNAP也增加了新的远程方法返回数据类型——TFDJSONDataSets. 顾名思义TFDJSONDataSets是数据集列表,是多个数据集的集合,DATASNAP通过它一次可以返回多个查询结果数据集. 服务端代码: function TServerMethods1.QuerySql2(const accountNo, sql: s

【转】Unity3D 场景切换与持久化简单数据储存(PlayerPrefs类)

本篇文章主要介绍了"Unity3D 场景切换与持久化简单数据储存(PlayerPrefs类)",主要涉及到Unity3D 场景切换与持久化简单数据储存(PlayerPrefs类)方面的内容,对于Unity3D 场景切换与持久化简单数据储存(PlayerPrefs类)感兴趣的同学可以参考一下. 持久化简单的数据储存在Unity3D 中提供了一个简单有效的方法,如果之前的你做过Android的开发你会发现在Unity3D中持久化数据的储存和Android非常的想象.那么下面MOMO 将用一

C#异步数据接收串口操作类

C#异步数据接收串口操作类 使用C#调用传统32位API实现串口操作,整个结构特别的简单.接收数据只需要定义数据接收事件即可. 上传源代码我不会,需要源代码的请与我([email protected])联系.你也可以教我怎么上传源代码. using System; using System.Runtime.InteropServices; /// <summary> /// (C)2003-2005 C2217 Studio  保留所有权利 /// /// 文件名称:     IbmsSeri

MySQL数据备份与还原

在文本文档中添加100万条数据,每条数据有8个字段,分别是: Id    int(11)      not null  primary key auto_increment Name varchar(40) Age  int(11) Sex  char(5) Salary  int(11) Phone  varchar(13) Email  varchar(64) not null Address  varchar(64) 1.MySQL 文本文件的导入导出数据的方法 导入数据:(在MySQL控