• 在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

  • 相关阅读:
    [CF845G]Shortest Path Problem?
    [洛谷P4149][IOI2011]Race
    [洛谷P4178]Tree
    [AtCoder AGC27A]Candy Distribution Again
    [洛谷P3806]【模板】点分治1
    [洛谷P2634][国家集训队]聪聪可可
    [CF280C]Game on Tree
    [洛谷P3338][ZJOI2014]力
    [CF438D]The Child and Sequence
    [CF609E]Minimum spanning tree for each edge
  • 原文地址:https://www.cnblogs.com/railgunman/p/1888304.html
Copyright © 2020-2023  润新知