老板要我用Delphi调用别人用VC写的com组件,但我不会,请高手解答,最好有源码,多谢了!

解决方案 »

  1.   

    1,当然先注册了,REGSVR32 *。DLL;
    1,uses comobj;
    2,VAR  TMP:OLEVARIANT;
    3,TMP:=CREATEOLEOBJECT(‘HERE,YOUR CLASS’);
      

  2.   

    简单的方法,呵呵,PROJECT--IMPORT TYPE LIBRARY--然后INSTALL,就出现在ACTIVEX上了
      

  3.   

    只要是com组件,用什么写都一样的。
    简单的方法是project --> import type library.  
    然后选择 create unit --> 你工程中会有com的类型库 --> 你可以创建接口
    如果选择 install --> 在activex 面板上会有你要用的组件var 
      InterfaceName: Interface....;
    begin  
      InterfaceName := CoClassName.CreateRemote(ServerName);
    ....
      

  4.   

    谢谢各位,但是我用上面说的方法不行,报错,列表中没有哪个dll,
    而且我添加的时候,说是加载出错,但是已经注册了的阿,是dll型势的
    com组件,不是activeX控件,请大家一定要帮我啊,再次感谢
    请再详细点
      

  5.   

    你看错了,不是COMP里,是PROJECT--IMPORT TYPE LIB。。
      

  6.   

    //我再用的时候看了使用的是PROJECT--IMPORT TYPE LIB,他报错是
    //加载类型库/dll错,好像在delphi里边看不到我注册的dll,而我在
    //VC里可以直接在程序中初始化com库,然后把组件的ID写出来,直接创建就可以用
    //请问这是怎么回事啊,有什么好的方法吗?
      

  7.   

    com组件的实现其实分好多层,用vc写的组件如果只是vc调的话,一般就少了很多功能,比如vb, delphi调用的时候必须支持Idispatch接口。而vc自己调用就可以不必用这个接口的。我想你的com组件可能就是这样的情况,如果要调用的话可以用vc将各个方法封出来。
      

  8.   

    嘿嘿,测试通过procedure TForm1.Button1Click(Sender: TObject);
    var
       ps:ICallMessage;
    begin
            ps :=comobj.CreateComObject(CLASS_CallMessage) as  ICallMessage;
            ps.CallBox ();
    end;