zoukankan      html  css  js  c++  java
  • 在COM+中,如何传递一个Record,或一个Record数组?

    在COM+中,如何传递一个Record,或一个Record数组?
    (可以传递ADO的记录集吗?好像VB可以,但VB传递的记录集,Delphi可以用吗?)

    当然可以
    看看一下代码
    1。定义一个结构
      ///////////////////自定义的欠费统计结构
      towe=record
        name:shortstring;
        fee0:shortstring;    //当月费用
        fee1:shortstring;   //total费用
      end;
      poweary=^toweary;
      toweary=array[0..20] of towe;
      powerecords=^towerecords;
      towerecords=record
         count:longint;
         oweary:toweary;
      end;
    2。需要两个函数
    function Tstat_acf.varianttoowerecords(v: olevariant): towerecords;
    var
      p:pointer;
    begin
      p:=vararraylock(v);
      move(p^,result,sizeof(towerecords));
      vararrayunlock(v);
    end;
    3。
    服务端
    function owestat:varaint;
    begin
    towerecords:=////给他附值
      v:=vararraycreate([0,sizeof(towerecords)],varbyte);
      P:=vararraylock(v);
      move(owerecords,p^,sizeof(towerecords));
      vararrayunlock(v);
    result:=v;
    end;
    4。客户端接收
    var
      v:variant;
    v:=socketconn.AppServer.owestat(owedate);///返回统计值
    owerecords:=varianttoowerecords(v); 

    一般用clientdataset传递数据包
    VB传递的记录集理论上可以被delphi接受,但你要在客户端(函数接受方)声明一个
    这种类型的变量,你有办法声明吗?

    可以;你可以将ADO的数据作为一个Variant类型的变量进行传送:
    这是服务端的一个方法的代码:
    function TADORec.getData: OleVariant;
    begin
    AdoDataSet1.Open;
    result := adodataset1.RecordSet;
    end;
    客户端调用服务端方法的代码:
    procedure TForm1.Button2Click(Sender: TObject);
    var
    vData : variant;
    begin
    DCOMConnection1.Connected := true;
    vData := DCOMConnection1.Appserver.GetData;
    AdoDataSet2.Recordset :=IUnknown( vData ) as _RecordSet;
    end;
    我想用VB传送的记录集Delphi应该也可以用,只要它用Variant类型的变量封装记录集。ADO的记录集跟使用的语言是无关的。 

    来源:http://www.delphibbs.com/delphibbs/dispq.asp?lid=683222

  • 相关阅读:
    bzoj1588
    bzoj1607
    bzoj2427
    Java-链表LinkedList源码原理分析,并且通过LinkedList构建队列
    Java --HashMap源码解析
    Java--volatile关键字的作用与用法
    Java--正则表达式-简单的在字符串中找数字
    Java--通过Spring AOP进行事务管理
    Java--String 和StringBuilder、StringBuffer 的区别?
    Java多线程--wait(),notify(),notifyAll()的用法
  • 原文地址:https://www.cnblogs.com/railgunman/p/1888304.html
Copyright © 2011-2022 走看看