【问题标题】:how to return TByteDynArray in SqlServerMethod DataSnap Server如何在 SqlServerMethod DataSnap Server 中返回 TByteDynArray
【发布时间】:2023-03-20 20:45:01
【问题描述】:

我有一个 DataSnap 服务器,其服务器方法如下:

function TServerMethods1.Get_Excel_History(key: string): TByteDynArray;

现在,在使用 TSQLServerMethod 的 DataSnap 客户端上,我在设计模式下成功连接到服务器,我正在向服务器发送请求并成功接收数据但无法读取输出参数。

  M.SqlServerMethod1.Close;
  M.ClientDataSet_All.Close;
  M.SqlServerMethod1.ServerMethodName:='TServerMethods1.Get_XML_History';
  M.SqlServerMethod1.Params.ParamByName('key').Value:=Edit1.Text;
  M.SqlServerMethod1.ExecuteMethod;


  ByteDynArray_Result:=M.SqlServerMethod1.Params.ParamByName('ReturnParameter').As???????;

如何读取 TByteDynArray 的类型? 先感谢您。

【问题讨论】:

  • 什么是M?为什么不直接通过代理调用方法呢?
  • 为什么不将其作为流返回?为什么是 ServerMethodName 'Get_XML_History' 但你指的是TServerMethods1.Get_Excel_History(key: string)
  • 我在这篇文章中添加了一个非常相似的问题的答案:stackoverflow.com/questions/51393907/…

标签: delphi client-server delphi-xe datasnap rad-studio


【解决方案1】:

TByteDynArray 不是有效的 DataSnap 参数。允许的参数类型列表取决于 Delphi 版本,并在此处记录:Exposing DataSnap Server Methods。 对于 Delphi 10.2 Tokyo,这是:

Boolean
SmallInt
Integer
Int64
Single
Double
AnsiString
String
TDBXTime
TDBXDate
TJSONValue and all descendents
TDBXWideStringValue
TDBXAnsiStringValue
TDBXUInt8Value
TDBXInt8Value
TDBXInt16Value
TDBXInt32Value
TDBXInt64Value
TDBXSingleValue
TDBXDoubleValue
TDBXBcdValue
TDBXTimeValue
TDBXDateValue
TDBXTimeStampValue
TDBXBooleanValue
TDBXReaderValue
TDBXStreamValue

有效的替代方案可以是流或 JSON。

【讨论】:

  • 如何从 TByteDynArray 获取 Json ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多