{"id":239,"date":"2014-08-26T21:41:24","date_gmt":"2014-08-26T13:41:24","guid":{"rendered":"http:\/\/blog.qdac.cc\/?p=239"},"modified":"2014-08-26T21:41:24","modified_gmt":"2014-08-26T13:41:24","slug":"qmsgpack-tclientdataset%e5%86%85%e5%ae%b9%e7%9b%b4%e6%8e%a5%e4%bf%9d%e5%ad%98%e5%88%b0messagepack%e6%95%b0%e6%8d%ae%e6%b5%81","status":"publish","type":"post","link":"https:\/\/blog.qdac.cc\/?p=239","title":{"rendered":"QMsgPack-TClientDataSet\u5185\u5bb9\u76f4\u63a5\u4fdd\u5b58\u5230MessagePack\u6570\u636e\u6d41"},"content":{"rendered":"<p>QMsgPack\u652f\u6301AsVariant\u65b9\u6cd5\uff0c\u800cTClientDataSet\u63d0\u4f9b\u4e86\u4e00\u4e2aData\u5c5e\u6027\u7684Variant\u7c7b\u578b\u53d8\u91cf\u76f4\u63a5\u4f20\u9012\u6570\u636e\u96c6\u5185\u5bb9\uff0c\u7531\u6b64\uff0c\u6211\u4eec\u53ef\u4ee5\u65b9\u4fbf\u7684\u5efa\u7acb\u4e24\u8005\u4e4b\u95f4\u7684\u5173\u7cfb\u3002<\/p>\n<p>\u3010\u63d0\u793a\u3011<\/p>\n<p>\u5728Delphi\u7684\u65e9\u671f\u7248\u672c\u4e2d\uff0cData\u8fd9\u4e2aVariant\u7c7b\u578b\u7684\u503c\u5185\u90e8\u4f7f\u7528\u7684\u662fAnsiString\u6765\u5b58\u8d2e\u7684\u5b57\u8282\u6d41\uff0c\u4f46\u6211\u5e76\u4e0d\u786e\u5b9aDelphi\u4ece\u4ec0\u4e48\u65f6\u5019\u5f00\u59cb\uff0c\u5c06\u5176\u6539\u4e3a\u4e86Byte\u6570\u7ec4\u7c7b\u578b\uff0c\u4f60\u53ef\u4ee5\u901a\u8fc7VarType\u51fd\u6570\u6765\u68c0\u6d4b\u5b83\u7684\u7c7b\u578b\uff0c\u4f46QMsgPack\u505a\u4e3a\u4e00\u4e2a\u66f4\u5e95\u5c42\u7684\u5b9e\u73b0\uff0c\u4e0d\u9002\u5408\u505a\u8fd9\u79cd\u68c0\u6d4b\u3002<\/p>\n<p>1\u3001\u5c06\u6570\u636e\u96c6\u7684Data\u4fdd\u5b58\u5230MessagePack\u534f\u8bae\u6570\u636e\u6d41\u6216\u6587\u4ef6\uff1a<\/p>\n<pre class=\"lang:delphi decode:true\" title=\"\u5c06Data\u5185\u5bb9\u8d4b\u7ed9MessagePack\u5bf9\u8c61\">var\r\n   AMsgPack:TQMsgPack;\r\nbegin\r\n  AMsgPack:=TQMsgPack.Create;\r\n  ...\r\n  AMsgPack.AsVariant:=ClientDataSet1.Data;\r\n  \/\/\u4fdd\u5b58\u5230\u6d41AStream\u4e2d\r\n  AMsgPack.SaveToStream(AStream);\r\n  \/\/\u6216\u4fdd\u5b58\u5230\u6587\u4ef6AFileName\u4e2d\r\n  AMsgPack.SaveToFile(AFileName);\r\n  ...\r\n  FreeAndNil(AMsgPack);\r\nend;<\/pre>\n<p>2\u3001\u4eceMessagePack\u534f\u8bae\u6570\u636e\u6d41\u6216\u6587\u4ef6\u4e2d\u52a0\u8f7d\u5230\u6570\u636e\u96c6<\/p>\n<pre class=\"lang:delphi decode:true\" title=\"\u4ece\u6d41\/\u6587\u4ef6\u4e2d\u52a0\u8f7d\u5230\u6570\u636e\u96c6\u5bf9\u8c61\">var\r\n  AMsgPack:TQMsgPack;\r\nbegin\r\nAMsgPack:=TQMsgPack.Create;\r\n\/\/\u4ece\u6d41AStream\u4e2d\u52a0\u8f7d\r\nAMsgPack.LoadFromStream(AStream);\r\n\/\/\u6216\u4ece\u6587\u4ef6AFileName\u4e2d\u52a0\u8f7d\r\nAMsgPack.LoadFromFile(AFileName);\r\n...\r\nClientDataSet1.Close;\r\nClientDataSet1.Data:=AMsgPack.AsVariant;\r\n...\r\nFreeAndNil(AMsgPack);\r\nend;<\/pre>\n<p>\u5bf9\u4e8e\u65e9\u671f\u7684\u7248\u672c\uff0c\u6211\u4eec\u9700\u8981\u505a\u4e00\u4e2a\u8f6c\u6362\uff1a<\/p>\n<p>1\u3001\u4eceAnsiString\u8f6c\u6362\u4e3aTBytes\uff0c\u7136\u540e\u518d\u8d4b\u7ed9AMsgPack\u3002<\/p>\n<pre class=\"lang:delphi decode:true\" title=\"AnsiString\u8f6c\u6362\u4e3aTBytes\">var\r\n  S:AnsiString;\r\n  ABytes:TBytes;\r\n  ...\r\nbegin\r\n...\r\n\/\/\u9996\u5148\u5c06Data\u8d4b\u7ed9\u4e00\u4e2a\u5b57\u7b26\u4e32\u5bf9\u8c61\r\nS:=ClientDataSet1.Data;\r\n\/\/\u590d\u5236\u5230\u5b57\u8282\u6d41\u4e2d\r\nSetLength(ABytes,Length(S));\r\nMove(PAnsiChar(S)^,ABytes[0],Length(S));\r\n\/\/\u7528AsBytes\u66ff\u6362AsVariant\r\nAMsgPack.AsBytes:=ABytes;\r\n...\r\nend;<\/pre>\n<p>2\u3001\u52a0\u8f7d\u65f6\u53cd\u8fc7\u6765\u5c06\u5b57\u8282\u6d41\u53cd\u8f6c\u6210AnsiString<\/p>\n<pre class=\"lang:delphi decode:true \" title=\"\u5b57\u8282\u6d41\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\">var\r\n  S:AnsiString;\r\n  ABytes:TBytes;\r\n  ...\r\nbegin\r\n...\r\n\/\/\u9996\u5148\u5c06Data\u8d4b\u7ed9\u4e00\u4e2a\u5b57\u7b26\u4e32\u5bf9\u8c61\r\nABytes:=AMsgPack.AsBytes;\r\nSetLength(S,Length(ABytes));\r\nMove(ABytes[0],PAnsiChar(S)^,Length(ABytes));\r\n\/\/\u7136\u540e\u5c06\u5b57\u7b26\u4e32\u8d4b\u7ed9Data\u5c31\u597d\u4e86\u3002\r\nClientDataSet1.Data:=S;...\r\nend;<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>QMsgPack\u652f\u6301AsVariant\u65b9 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[8,44],"tags":[45,46,47],"class_list":["post-239","post","type-post","status-publish","format-standard","hentry","category-delphi","category-qmsgpack","tag-clientdataset","tag-stream","tag-47"],"views":7147,"_links":{"self":[{"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/posts\/239","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=239"}],"version-history":[{"count":1,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/posts\/239\/revisions"}],"predecessor-version":[{"id":240,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/posts\/239\/revisions\/240"}],"wp:attachment":[{"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=239"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=239"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=239"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}