你可以使用VarArrayOf,例如:
Var
  MyVar:Variant;
Begin
  MyVar:=VarArrayOf(['samples',100,2045]);从上面的代码可以看到,利用VarArrayOf可以创建数据类型不同的Variant数组
这同Record是类似的。

解决方案 »

  1.   

    你好:
        其实你回答的那种方法不过是数组维数返回数组而已。如果是数组里每一维返回的是一个record,就可以在调用的时候写出
    tmp[0].filed1这样的输出格式,也就是一种类似二级interface的样子哦,如果是这样,应该如何实现呢?    在VB里我就可以实现,我是将每一维数的值set成一个class,该class里有一些property(包括get,set的方法),这样再调用这个COM的时候就可以非常方便的读取相应的信息。你明白我说的吗?在DELPHI上一直没有一个好方法哟。    能帮帮我吗?解决了多多的加分! :D
      

  2.   

    你可以看看TClientDataSet是怎么做的,好像用OleVariant.我上次留意到它可以进行RECORDSET的传输。就是data那属性。
      

  3.   

    改个类型吧!!
    原因 COM不是所有类型都支持的, 你的Record也行,但嘿嘿要进行个所谓 Marshaling和 Unmarshaling(MS称之为编组)也就是说你的 Record就不行了要定义成一个interface事情就很多了。这种做法Delphi很多,TStringList是个范例
      

  4.   

     请和我联系([email protected])
    虽然我还没有编 demo 但 1-2 天内可以给你一个满意的答复.这个问题有一定的难度,但delphi是完全可以解决的。
      

  5.   

    各位大哥说的都不是太明白哟,我觉得返回record是不太可行的,但是在DELPHI里返回一个二级interface我又不知道如何制作……
    实在不知道怎么办好