【发布时间】:2011-07-02 14:54:57
【问题描述】:
我有一个在 Delphi 7 和 RemObjects SDK 中构建的客户端-服务器应用程序。客户端和服务器之间的消息是二进制的 (http://wiki.remobjects.com/wiki/BinMessage)。我的问题是: 1)如果我用 TDataSet/TDataSource 填充数据并将它们从客户端发送到服务器,那么服务器组件的 DataSet 将包含数据吗?数据应该保持不变,不是吗? 2) 我尝试通过 RemObjects 发送组件,封装在 TROBinaryMemoryStream 后代类中,但没有成功
类定义
TRODataSource=class(TROBinaryMemoryStream)
private
FNameDS:String;
FDS:TDataSource;
procedure SetName(aValue:String);
procedure SetDS(aValue:TDataSource);
public
published
property Name:String read FNameDS write SetName;
property DataSource:TDataSource read FDS write SetDS;
end;
发送数据源的方法
function foo(aDataSource: TDataSource):integer;
var
wStream:TRODataSource;
begin
wStream:=TRODataSource.Create;
wStream.Name:='TEST';
wStream.DataSource:=aDataSource;
try
Result:=(RORemoteService as ISvc..).foo1(wstream);//method existing on the server will //return how many records are in the dataset
finally
freeandnil(wstream);
end;
end;
我们将不胜感激。
LE:似乎只有 TROComplexType 的后代类可以序列化http://wiki.remobjects.com/wiki/Remote_Object_Allocation_and_Serialization。但我不确定我是否不能序列化流上的组件。
【问题讨论】:
-
序列化 TDataSet 可能更容易序列化纯数据。
-
是的,我知道。我试图序列化一个数据源/数据集来构建某种框架,但这似乎比我预期的要难。
标签: delphi serialization delphi-7 remobjects