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 ...
随机推荐
- 接收二进制流(ArrayBuffer) ,并且显示二进制流图片
1.调用接口,返回二进制流数据 var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { && xhr ...
- 【前端vue开发】vue开发总结
- javascript设计模式----桥接模式、组合模式、装饰者模式、享元模式
http://blog.csdn.net/painsonline/article/details/7215087 桥接模式:http://www.cnblogs.com/TomXu/archiv ...
- Django RESTful Web Services, 此书学DRF不错
全名为<Django RESTful Web Services: The easiest way to build Python RESTful APIs and web services wi ...
- redis 相关知识点
(1)什么是redis? Redis 是一个基于内存的高性能key-value数据库. (有空再补充,有理解错误或不足欢迎指正) (2)Reids的特点 Redis本质上是一个Key-Value类型的 ...
- 搞不清FastCgi与php-fpm之间是个什么样的关系
我在网上查fastcgi与php-fpm的关系,查了快一周了,基本看了个遍,真是众说纷纭,没一个权威性的定义. 网上有的说,fastcgi是一个协议,php-fpm实现了这个协议: 有的说,php-f ...
- 005.Zabbix-Agent客户端安装
一 安装Zabbix-Agent [root@imxhy ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-rel ...
- 浅谈2-SAT(待续)
2-SAT问题,其实是一个逻辑互斥问题.做了两道裸题之后仔细想来,和小时候做过的“有两个女生,如果A是女生,那么B一定不是女生.A和C性别相同,求A.B.C三人的性别.”几乎是一样的. 对于这道题我们 ...
- 2019 A类
- java 注解 总结
http://www.importnew.com/23564.html 注解的好处: 1.能够读懂别人写的代码,特别是框架相关的代码. 2.本来可能需要很多配置文件,需要很多逻辑才能实现的内容,就可以 ...