用delphi封装的COM DLL后,delphi中那个 obj=objserver.create;
这个如何在VB中使用?或者有其他的办法?
请高手指点!

解决方案 »

  1.   

    dim s as objserver.create
    set s=new objserver.create建议贴出你的delphi代码
    原理是一样的,工程名.类名
      

  2.   

    就是这样COM的标准调用,只要Delphi编译的COM没有问题
      

  3.   

    试了试,不行。在VB中写DIM代码是根本就没有.create提示,运行时报“类型不匹配”的错误。
    上面两位老大能不能说说你在delphi中是如何封装create方法和如何处理字符串类型的传递的吗?
    顺便再说说VB中如何调用的,谢谢。
    我准备等这个问题完了,放入FAQ区,发现能解答这样问题的人太少了。谢谢!!!
      

  4.   

    我对delphi不熟
    如果create方法是你自己写的,delphi中写com组件,定义create方法即可,此时,vb中可以看到
      

  5.   

    相关资料:
    http://www.csdn.net/Develop/Read_Article.asp?Id=18301
    http://www.csdn.net/Develop/Read_Article.asp?Id=17718
    http://www.csdn.net/Develop/Read_Article.asp?Id=10946
    http://www.csdn.net/Develop/Read_Article.asp?Id=9127
    http://www.csdn.net/Develop/Read_Article.asp?Id=13612
    http://www.csdn.net/Develop/Read_Article.asp?Id=12474
    http://www.csdn.net/Develop/Read_Article.asp?Id=13793
    有几篇是delphi的,希望能解决你的问题
      

  6.   

    举个例子
    新建ACTIVE DLL工程,工程名COM_Test,类名clsAdd,类中粘贴代码:
    Option Explicit
    Public x, y As Integer
    Public Function myAdd() As Integer
    myAdd = x + y
    End Function
    编译得到COM_Test.dll,下面开始注册组件
    开始-设置-控制面板-组件服务,找到COM+应用程序,右键新建 应用程序,创建一个空应用程序,就叫myadd吧,然后右键新建组建,导入刚才生成的COM_Test.dll,成功以后点击myadd应用程序,将其导出,注意类型选代理,就会生成myadd.msi和myadd.msi.cab两个文件Option Explicit
    Dim myAdd As New clsAddPrivate Sub Command1_Click()With myAdd
        .x = Val(Text1.Text)
        .y = Val(Text2.Text)
        Text3.Text = .myAdd
    End WithEnd SubPrivate Sub Command2_Click()
    Set myAdd = Nothing
    End
    End SubPrivate Sub Form_Load()
    Set myAdd = New clsAdd
    End Sub
    然后编译生成COM_CLIENT.EXE,将这个文件和刚才导出的两个文件复制到客户机上(WIN2000),
    在客户机上安装myadd.msi,再运行COM_CLIENT.EXE试试!
    注意在客户机登录的用户要有安装和访问服务器组件的权限!delphi的原理是一样的
      

  7.   

    create是构造函数,delphi一般应该能自己处理,如果在delphi中调用我知道怎么写,但换了在VB中,我就不知道如何写了。我在想这个函数不应该以接口的方式向外部提供。
      

  8.   

    谢谢online,我知道在VB中调用和编写COM DLL都没什么问题,关键是我在delphi中编出来的东西到VB中使用有问题,而且我现在的问题主要集中在构造函数这个地方,我先看看你贴出的资料先谢谢你的回复。