我不知道,不过delphi中有demo的.

解决方案 »

  1.   

    我想,如果你在客户端用了clientdataset,在服务端用了datasetprovider,那你可以在 datasetprovider的OnGetData事件中,对图像进行压缩,然后在ClientDataSet的AfterGetRecords事件中,对图像进行解压。你的想法不错,我觉得我的系统也可以用这样的方法提高效率,能不能告说我你准备用什么方式对数据进行压缩?也许我们可以继续交流一下?用IDataIntercept的方式也不错,有空我也研究一下。
      

  2.   

    实现IDataIntercept的方法不错.
    我做过,但只是用于SocketConnection.它只需要实现两个方法,
    1,数据进, 在里面实现解压.
    2,数据出, 在里面实现压缩.理解了就简单,具体代码可以从DEMO改写..
      

  3.   

    按下面的步骤,就可以了,不用去写代码,记住,它是内置的功能,只要如下配置即可。
    1:
    准备工作,先delphi光盘中的\info\extras\zlib\zlib.pas进行编绎,然后copy 到lib路径中,因为要压缩数据,必须要有压缩功能,这个delphi已经自带,它是基于流的方式对接口IDataBlock(TDataBlock实现,其实就是对TMemoryStream的操作)数据进行压缩和解压的。做了这个后,才能进行下面的工作。
    2:
    Open \Demos\Midas\Intrcpt\Intrcpt.dpr 
    complier....
    生成Intrcpt.dll 
    将Intrcpt.dll copy to System directory,或者你的程序下面。
    注册它:regsrvr32 Intrcpt.dll
    记住Intrcpt.dpr的那个GUID3:
    Server: 
    Open scktsrvr.exe,相信各位都很熟悉那界面,端口(TListbox),Thread Cache Size(TEdit), GUID(TEdit),好,我们要做的事,就是将注册的Intrcpt.dll那个GUID填到这个GUID(TEdit)框框中,
    只需填自己程序的的那个端口的GUID啊,记住:是自已使用的那个端口。OK,Apply.Client:
    你写的程序中肯定有TSocketConnection,它有个属性InterceptGUID: string;好了,将Intrcpt.dll的GUID填上去,它是跟Server中的一样的。OK.还有别忘了,Regsrvr32 intrcpt.dll 在你的客户端。不然,程序虽不会raise,但是Server传过来的数据是压缩的....  IDataIntercept接口只为TSocketConnection而做,DCOM不支持,只能自已写,在发送和接收的时候。