码迷,mamicode.com
首页 > 其他好文 > 详细

DATASNAP远程方法返回TSTREAM正解(转咏南兄)

时间:2018-10-12 23:51:25      阅读:380      评论:0      收藏:0      [点我收藏+]

标签:col   delphi   adl   MTA   class   RoCE   send   方法   可行性   


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;

 

DATASNAP远程方法返回TSTREAM正解(转咏南兄)

标签:col   delphi   adl   MTA   class   RoCE   send   方法   可行性   

原文地址:https://www.cnblogs.com/Thenext/p/9780382.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!