当前位置: 首页 > news >正文

DATASNAP远程方法返回TSTREAM正解

DATASNAP远程方法返回TSTREAM正解

DATASNAP远程方法返回TSTREAM,如果数据大小超过32K是会报错的。许多DELPHIER栽在这个上头,甚至开始怀疑TSTREAM返回数据的可行性。

因为DATASNAP远程方法返回TSTREAM,数据包大小有最大32K限制。

怎么解决?客户端要做并包处理。

function CopyStream(const AStream: TStream): TMemoryStream;
const
LBufSize = $F000;
var
LBuffer: TBytes;
LReadLen: Integer;
begin
Result := nil;
if AStream = nil then
Exit;
Result := TMemoryStream.Create;
try
if AStream.Size = -1 then
begin
SetLength(LBuffer, LBufSize);
repeat
LReadLen := AStream.Read(LBuffer[0], LBufSize);
if LReadLen > 0 then
Result.WriteBuffer(LBuffer[0], LReadLen);
if LReadLen < LBufSize then
break;
until LReadLen < LBufSize;
end
else
Result.CopyFrom(AStream, 0);
Result.Position := 0;
except
Result.Free;
end;
end;

 

procedure TForm1.btnQry3Click(Sender: TObject);
var
LStream: TStream;
LMemStream: TMemoryStream;
begin
DataSource1.DataSet := FDMemTable1;
LStream := methods.QuerySql3('0', 'select * from t1');
if LStream <> nil then
begin
LMemStream := CopyStream(LStream);
FDMemTable1.LoadFromStream(LMemStream, TFDStorageFormat.sfBinary);
LMemStream.Free;
end;
end;

相关文章:

  • 对比学习UIKit和AppKit--入门级
  • SVM算法入门
  • 分布函数(连续型连续型)
  • iOS应用开发攻略(助你iOS开发中攻城拔寨)
  • 在Struts2标签s:textfield中显示正确的日期
  • sql 用户定义函数自动生成自增长ID
  • 免费的精品: Productivity Power Tools 动画演示
  • C++之solmyr小品文
  • CMake的应用(在vision studio2008中去掉 ALL_BUILD 和 ZERO_CHECK)
  • 使用sqlite保存数据返回主键
  • 码云 Gitee 新增仓库访问之 IP 白名单功能
  • CentOS 6.4 下安装vsftpd
  • python基础数据类型(1)
  • Oracle实现自增列
  • UIApplication
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 03Go 类型总结
  • Bootstrap JS插件Alert源码分析
  • Centos6.8 使用rpm安装mysql5.7
  • Hibernate最全面试题
  • Java多态
  • Js基础知识(一) - 变量
  • k8s如何管理Pod
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • mysql外键的使用
  • Rancher-k8s加速安装文档
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • spark本地环境的搭建到运行第一个spark程序
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 大数据与云计算学习:数据分析(二)
  • 对超线程几个不同角度的解释
  • 对象引论
  • 翻译:Hystrix - How To Use
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 警报:线上事故之CountDownLatch的威力
  • 你真的知道 == 和 equals 的区别吗?
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 王永庆:技术创新改变教育未来
  • 微信小程序:实现悬浮返回和分享按钮
  • 学习HTTP相关知识笔记
  • 用Python写一份独特的元宵节祝福
  • 白色的风信子
  • 2017年360最后一道编程题
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​【已解决】npm install​卡主不动的情况
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • #在 README.md 中生成项目目录结构
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (汇总)os模块以及shutil模块对文件的操作
  • (三)elasticsearch 源码之启动流程分析
  • (一)Neo4j下载安装以及初次使用
  • (转)利用ant在Mac 下自动化打包签名Android程序