msgpack的数据序列和还原
msgpack的数据序列和还原
msgpack不仅可以序列一些常规的数据类型的数据,比如:string、datetime、integer。。。。。。
还能序列olevariant、stream
这就非常强大而完美了。
procedure TynTcpMethod.SendPicture(AReceiverID: string; APicture: TMemoryStream);
var
LMsgPack: TSimpleMsgPack;
LStream: TMemoryStream;
begin
LMsgPack := TSimpleMsgPack.Create;
LStream := TMemoryStream.Create;
try
LMsgPack.clear;
LMsgPack.ForcePathObject('command').AsString := 'picture';
LMsgPack.ForcePathObject('senderid').AsString := User.UserID;
LMsgPack.ForcePathObject('sendername').AsString := User.UserName;
LMsgPack.ForcePathObject('receiverid').AsString := AReceiverID;
LMsgPack.ForcePathObject('picture').LoadBinaryFromStream(APicture); // 流序列图片或文件
LMsgPack.ForcePathObject('time').AsDateTime := Now;
LMsgPack.EncodeToStream(LStream);
LStream.Position := 0;
IdTCPClient1.IOHandler.Write(LStream, LStream.Size, True);
finally
LMsgPack.Free;
LStream.Free;
end;
end;
procedure TynTcpMethod.RecvPicture;
var
LUserMsg: TUserMsg;
LMyMsg: TMyMSG;
begin
if FMsgDict.TryGetValue(FMsgPack.ForcePathObject('senderid').AsString, LUserMsg) then // 查字典
begin
LMyMsg.IsMSG := False;
LMyMsg.IsFile := False;
LMyMsg.IsPicture := True;
LMyMsg.PictureStream := TMemoryStream.Create;
FMsgPack.ForcePathObject('picture').SaveBinaryToStream(LMyMsg.PictureStream); LMyMsg.Time := FMsgPack.ForcePathObject('time').AsDateTime;
LMyMsg.Command := FMsgPack.ForcePathObject('command').AsString;
LMyMsg.SenderId := FMsgPack.ForcePathObject('senderid').AsString;
LMyMsg.SenderName := FMsgPack.ForcePathObject('sendername').AsString;
LMyMsg.ReceiverId := FMsgPack.ForcePathObject('receiverid').AsString;
LUserMsg.EnQueue(LMyMsg); // 消息入队
end;
end;
msgpack的数据序列和还原的更多相关文章
- cross socket和msgpack的数据序列和还原
cross socket和msgpack的数据序列和还原 procedure TForm1.Button1Click(Sender: TObject); begin var pack: TSimple ...
- 优秀的数据序列和还原类----TSimpleMsgPack
优秀的数据序列和还原类----TSimpleMsgPack TSimpleMsgPack是D10天地弦的作品. 优点:至简,就一个单元文件实现,不需要引用其他单元. 缺点:不是标准的MSGPACK实现 ...
- DATASNAP高效的FIREDAC数据序列和还原
变量定义: varFDConnection: TFDConnection;qCustomers: TFDQuery; qOrders: TFDQuery;FDSchemaAdapter: TFDSch ...
- firedac的数据序列和还原单元(Data.FireDACJSONReflect.pas)之拷贝FIREDAC数据集
使用流做中转 procedure CopyDataSet(const ASource, ADest: TFDAdaptedDataSet);var LStream: TStream;begin LSt ...
- MSGPACK序列和还原TFDParams
MSGPACK序列和还原TFDParams unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, S ...
- ARIMA模型——本质上是error和t-?时刻数据差分的线性模型!!!如果数据序列是非平稳的,并存在一定的增长或下降趋势,则需要对数据进行差分处理!ARIMA(p,d,q)称为差分自回归移动平均模型,AR是自回归, p为自回归项; MA为移动平均,q为移动平均项数,d为时间序列成为平稳时所做的差分次数
https://www.cnblogs.com/bradleon/p/6827109.html 文章里写得非常好,需详细看.尤其是arima的举例! 可以看到:ARIMA本质上是error和t-?时刻 ...
- QJSON封装好的序列和还原方法
QJSON封装好的序列和还原方法 {*******************************************************}{ }{ QJSON与数据集互转 }{ }{ 版权所 ...
- TynSerial序列(还原)TFDMemTable
TynSerial序列(还原)TFDMemTable 1)TFDMemTable查询数据 procedure TForm1.Qrys(accountno, sql, sql2: string; Dat ...
- TynSerial序列(还原)TClientDataSet
TynSerial序列(还原)TClientDataSet 可以一次性序列(还原)多个TClientDataSet. 1)TClientDataSet查询数据 procedure TForm1.Qry ...
随机推荐
- Java中static关键字概述
例如一个学生类中,我们需要统计下学生类中学生对象的数量,此时数量要定义为静态变量: 示例代码: package com.java1995; public class Student { int id= ...
- ADO.Net1
一.ADO.Net 数据库连接技术 二.查询 1.步骤: 1)使用数据库空间:using System.Data.SqlClient; 2)连接数据库 3)创建数据库操作命令 4)输入操作命令 5)开 ...
- 【redis】3.Spring 集成注解 redis 项目配置使用
spring-data-redis 项目,配合 spring 特性并集成 Jedis 的一些命令和方法. 配置redis继承到spring管理项目,使用注解实现redis缓存功能. 参考:http: ...
- 【推荐】关于JS中的constructor与prototype【转】
最初对js中 object.constructor 的认识: 在学习JS的面向对象过程中,一直对constructor与prototype感到很迷惑,看了一些博客与书籍,觉得自己弄明白了,现在记录如下 ...
- selenium自动测试
import requestsimport sysimport iofrom selenium import webdriverfrom selenium.webdriver.common.actio ...
- P1164 小A点菜 洛谷
题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:“随便点”. 题目描述 不过uim由于买了一些辅(e ...
- 004 作业二(单击弹跳li节点的每个文本节点的值;点击每个 li 节点, 若 li 节点的文本值没有 ^^ 开头, 加上,有,则去除)
1.需求 点击每个 li 节点, 都弹出其文本值 2.程序 <!DOCTYPE html> <html> <head> <meta charset=" ...
- 自然语言处理---用隐马尔科夫模型(HMM)实现词性标注---1998年1月份人民日报语料---learn---test---evaluation---Demo---java实现
先放上一张Demo的测试图 测试的句子及每个分词的词性标注为: 目前/t 这/rzv 条/q 高速公路/n 之间/f 的/ude1 路段/n 已/d 紧急/a 封闭/v ./w 需要基础知识 HM ...
- hdu 4460 第37届ACM/ICPC杭州赛区H题 STL+bfs
题意:一些小伙伴之间有朋友关系,比如a和b是朋友,b和c是朋友,a和c不是朋友,则a和c之间存在朋友链,且大小为2,给出一些关系,求出这些关系中最大的链是多少? 求最短路的最大距离 #include& ...
- 简单分享apache封IP的方法
1. 在配置文件里设置: 打开httpd.conf编辑:<Directory “/var/www/html”> Options Indexes FollowSymLinks ...