我有一个在 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。但我不确定我是否不能序列化流上的组件。