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 ...
随机推荐
- elasticsearch如何使用?
ES和关系型数据库的数据对比 1.创建索引库PUT/POST都可以,索引库名称必须全部小写,不能以下划线开头,也不能包含逗号curl -XPUT 'http://192.168.136.131:920 ...
- wordpress配置通过IP直接访问及apache的配置
wordpress配置通过IP直接访问 环境: 操作系统:centos6.5 yum安装lamp环境: yum -y install mysql mysql-server php php-mysql ...
- 通过 EXPLAIN 分析低效 SQL 的执行计划
每个列的简单解释如下: select_type:表示 SELECT 的类型,常见的取值有 SIMPLE(简单表,即不使用表连接 或者子查询).PRIMARY(主查询,即外层的查询).UNION(U ...
- 移动端调试利器之vconsole
说明 由于移动端项目在手机中调试时不能使用chrome的控制台,而vconsole是对pc端console的改写 使用方法 使用 npm 安装: npm install vconsole 使用webp ...
- java Comparator和Comparable(比较器)
Comparable: 一个类实现了Camparable接口则表明这个类的对象之间是可以相互比较的,这个类对象组成的集合就可以直接使用sort方法排序,sort方法调用compareTo()方法里定义 ...
- DRF分阶段序列化细化实例
DRF是分两阶段进行的. 如果是API接收数据,则是先进行Parser,将外界接收的bytes数据分析成python数据类型,其间涉及encoding操作,再进行序列化,将python数据类型保存进数 ...
- mysql5.6.34在默认配置文件修改字符集为utf8后重启mysql服务没效果
1:事情是这样的,我下载了一个mysql5.6.34版本(windows版本的),下载下来后里面只有个my-default.ini,然后我就直接在my-default.ini 里面配置basedir, ...
- 查看浏览器中Cookie信息
一般在浏览器的设置中能找到Cookie的相关设置和查看信息 在js中使用 alert(document.cookie) 也能查看到当前页面的 Cookie 信息实现方式1.若是自己开发的页面 直接在j ...
- 017 jquery中对样式的操作
1.样式操作 2.css-dom操作 3.程序 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...
- 高能天气——团队Scrum冲刺阶段-Day 1-领航
高能天气--团队Scrum冲刺阶段-Day 1-领航 各个成员在 Alpha 阶段认领的任务 经过重新的团队讨论,我们最新确定的α版本所需实现内容如下: 查找城市:切换城市按钮.滑动界面视图 天气预报 ...