大家好:
     本人没用Delphi写过程序,现在我做了一个集成插件的框架程序,想用delphi也做一个插件,插到框架中测试一下框架的能力。在VC下已经没问题了,用Delphi我摸了半天,还没有整出头绪,跟大家请教一下。
     问题如下:
             我用vc做了COM的动态库,动态库中定义了一些基础接口,这些接口让插件从此继承。
基接口:
interface IAppCtrl : IDispatch
{
[id(1), helpstring("method GetPlugType")] HRESULT GetPlugType([out]long *pType);
};
基接口实现类:
class ATL_NO_VTABLE CAppCtrl : 
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CAppCtrl, &CLSID_AppCtrl>,
public IDispatchImpl<IAppCtrl, &IID_IAppCtrl, &LIBID_APILIBLib>
{
public:
CAppCtrl()
{
}DECLARE_REGISTRY_RESOURCEID(IDR_APPCTRL)DECLARE_PROTECT_FINAL_CONSTRUCT()BEGIN_COM_MAP(CAppCtrl)
COM_INTERFACE_ENTRY(IAppCtrl)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()// IAppCtrl
public:
STDMETHOD(GetPlugType)(/*[out]*/long *pType);
};
  在vc下做插件如下:
class ATL_NO_VTABLE CSamplePlug1 : 
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CSamplePlug1, &CLSID_SamplePlug1>,
public IDispatchImpl<ISamplePlug1, &IID_ISamplePlug1, &LIBID_SamplePlugLib>,
public IDispatchImpl<IAppCtrl, &IID_IAppCtrl, &LIBID_APILIBLib>{
public:
CSamplePlug1()
{
}DECLARE_REGISTRY_RESOURCEID(IDR_SAMPLEPLUG1)DECLARE_PROTECT_FINAL_CONSTRUCT()BEGIN_COM_MAP(CSamplePlug1)
COM_INTERFACE_ENTRY(ISamplePlug1)
// COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY2(IDispatch,ISamplePlug1)
COM_INTERFACE_ENTRY(IAppCtrl)END_COM_MAP()// ISamplePlug1
public:
STDMETHOD(GetPlugType)(/*[out]*/long *pType)
{
return S_OK;
};};,
黑体部分为添加部分,为了实现IAppCtrl接口,框架调用插件时,统一将插件接口指针存为IAppCtrl×,、管理插件。现在问题是Delphi下如何实现这个插件?在Delphi一个类也可以实现多个接口用法:Type  
                               Txxx = class(TComObj,IxxxInterface1,IxxxInterface2);
             不知是否正确,请各位大虾给条道,最好给我个例子,谢谢!对问题不清楚的话,可以继续问我。