我用得delphi做一个com组件,在组件里调用另一个类,然后用vb调用该com组件,结果报错,经过检查发现在创建另一个类时出错,这到低怎么回事,是否不能创建类,如果需要创建类应该如何做,分不够再加,分有的是。

解决方案 »

  1.   

    另一个类也是delphi写的话,还不是用Create
      

  2.   

    我想你说的是在一个组件中调用另一个组件吧?
    如果是这样,我不知道你的调用代码是不是这样写的?
    如:
    //这是一个组件中的函数
    function TExamChargeCoor01.GetAvailPayRecipes(PatID: Integer;
      var RecipeList: OleVariant): HResult;
    var
      ChargeFeeObj: IChargeFee; //被用的组件接口
    begin
      result := S_FALSE;
      try
        OleCheck(ObjectContext.CreateInstance(CLASS_CHARGEFEE,
          IID_IChargeFee, ChargeFeeObj));   //这一句是创建被调用组件接口的
        result := ChargeFeeObj.GetAvailRecipes(PatID, RecipeList);
        LdSetComplete(Result);
      except on e: exception do
        SetAbort;
      end;
    end;如果你的调用方法和顺序和我上面的层次是一样的庆,应该没有问题的
    在组件中却调用另一个组件接口,一般用CreateInstance
      

  3.   

    对不起可能我没说清楚,在组件中创建一个delphi自带的一个类,比如TCollection,TCollectionItem(或者是一个由object继承下来的类)则创建时报错,用delphi引用则不报错用vb引用则报错
      

  4.   

    我自己解决了,把delphi的组件用vb封装一下就可以了