【发布时间】:2016-11-28 02:41:57
【问题描述】:
我有一个用 Delphi 7 编写的 3 层应用程序,它使用基于 WebBroker 的 SOAP 服务器(独立 exe)和 SOAP 客户端程序通过 HTTPRIO 组件进行通信。
这不是 DataSnap 应用程序。相反,服务器将数据作为与传递到 SOAP 请求中的 SQL 字符串相对应的 ADTG 格式的断开连接的 ADO 记录集发送到客户端。 (服务器首先对其进行压缩并将其转换为 Base64 以便于作为“字符串”结果传输回客户端。)
我直接使用返回的记录集来遍历它的行和字段(即不需要使用 DataSet 组件),因为我在 Microsoft Access 中使用 VBA 进行了多年编程,因此我很乐意这样做。 幸运的是,也可以将其直接分配给 TADODataset 组件的 Recordset 属性,以便我可以将其绑定到 QuickReport。
我现在想将我的客户端程序升级到 FireMonkey,以便我可以为 Windows 和 OSX 编译它,并假设我将无法再使用 ADO Recordsets,至少不能在 Mac 环境中使用。
在准备转换为 FireMonkey 时,我能做到的最佳数据格式是什么 a) “手动”断开和传输, b)加载到数据集组件中,以便我可以基于它生成报告,并且 c) 如果可能,在代码中处理数据而不必先将其加载到组件中?
最后一项对我来说很重要,不仅因为我习惯于在不使用组件的情况下处理数据,还因为我经常在线程中请求数据以便在后台检索它而不锁定用户界面。据我了解,组件和线程不会在一起。
关于最佳前进方向的任何建议?
【问题讨论】:
-
组件和线程没有问题。从线程访问 visual 组件存在问题,但数据集组件不是可视的。您的问题在我看来非常广泛且有些模糊,但您可能正在寻找 TClientDataSet。
-
@KenWhite 你好here
-
是的。谢谢肯。 TClientDataSet 似乎是最好的选择。
标签: delphi soap tclientdataset