typedef struct COMPONENT_INFO
{
   short sMajor;
   short sMinor;
} COMPONENT_INFO; [
object,
uuid(6C773819-BA76-4063-8887-9D62259B80F2),

helpstring("ITools Interface"),
pointer_default(unique)
]
interface ITools : IUnknown
{
[helpstring("method GetFileType")] HRESULT GetFileType([in]BSTR inputFile);
[helpstring("method set_OtherInfo")] HRESULT set_OtherInfo([in]COMPONENT_INFO Info);
};
现在COM组件已编好,不知有VB与DELPHI中如何来写COM组件的测试程序?Public Type COMPONENT_INFO
    sMajor As Long
    sMinor As String
End TypePrivate Sub Command2_Click()
    Dim Obj As New COMSTUDYLib.Tools
    
    Dim info As COMPONENT_INFO
    info.sMajor = 10
    info.sMinor = 5
    
    Obj.set_OtherInfo (info)End Sub
可是在VB中却报错:
编译错误:
用户定义类型不能用不知错误是为什么,肯请各位赐教!

解决方案 »

  1.   

    To:rtdb(东临碣石)
    可是我必须使用VC中的结构体呀,也就是VB中的自定义类型,如何实现?
    肯请你多多赐教
      

  2.   


        'Dim Obj As New COMSTUDYLib.Tools  'Don't use it
        Dim objs
        set objs=CreateObject("Comstudylib.Tools")
      

  3.   

    To fanchka(狼仔) 
    还是不行
    编译错误:
    只有定义在公共对象模块中用户定义类型能秋变体类型相互转换或传递给后期绑定功能。
      

  4.   

    呵呵.. 是你的VB代码中struct的问题:vb中叫type,如下:
    1. 在VB工程中添加一个"模块" : Module1
       
    在此代码中写入你的sturct:
    Public Type COM_STURCT
    n1 As Integer   '注意: VB中不存在short类型 ,如果下面代码同不过,建议你用long
    n2 As Integer
    End Type2. Private Sub Command2_Click()
            '这中写法,必需有类型库的支持,即,你要再VB"工程"->"引用.."中,选中组件
        Dim Obj As New COMSTUDYLib.Tools      Dim info As Module1.COM_STRUCT
        info.sMajor = 10
        info.sMinor = 5
        
        Obj.set_OtherInfo (info)End Sub
      

  5.   

    Obj.set_OtherInfo (info) ???   你想传入自定义数据?
    上面的思路接收你自定义数据没有问题,但无法传入.
    vb中,传入的类型好像只能是variant类型. 如果你一定要传入的话, 就用varinat数组吧.
      

  6.   

    使用数组吧,使用一个CSingleSafeArray类可以简化编程,如果有需要,可以给你!