Delphi 7 remobjects - 序列化组件

我有一个用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。但我不确定我是否无法序列化流上的组件。     
已邀请:
当您将组件序列化为流(请参阅我的其他帖子)时,您可以使用“二进制”类型将流从服务器发送到客户端(并反向): http://wiki.remobjects.com/wiki/TROBinaryMemoryStream_Class 或者只是将其作为字符串发送:-)。无需覆盖TROBinaryMemoryStream!     
对于TComponent / TPersistent序列化(如Delphi与.dfm文件一样),您可以使用“ObjectTextToBinary”: http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Classes_ObjectTextToBinary@TStream@TStream.html 但是,如果使用子对象(对象属性),则会出现问题。 您还可以搜索更一般的序列化(使用RTTI)到XML等: Delphi(win32)序列化库 Delphi组件序列化 编辑:您可以将结果作为字符串发送到RemObjects中,或者将其放在TMemoryStream中并使用RO二进制类型。     

要回复问题请先登录注册