1、COM的规范约定,所有的接口或者它的原始祖先,都必须从IUNKNOWN承接,IUNKNOWN必须实现三个方法,既QueryInterface, _AddRef, and _Release。2、IBaseDataFile = interface(IUnknown),既表示宣告的接口IBaseDataFile从IUNKNOWN继承,因而IBaseDataFile也具有实现QueryInterface, _AddRef, and _Release三个方法的能力,也就具备用Com的Delphi实现架构实现Com的能力。3、对Delphi而言IBaseDataFile = interface 和IBaseDataFile = interface(IUnknown)的写法基本上是一致的。如果非要说有什么不一样,应该说IBaseDataFile = interface 这种写法是不依赖操作系统平台,而IBaseDataFile = interface(IUnknown)这种写法仅支持MS的Windows平台,因为IUnknown的叫法应该是MS的Mr.Don Box(好像Mr.Don Box的车牌号码就是IUNKNOWN的个性号,山姆大仙真牛哥)提出的吧。如果你写的代码与平台无关,可以忽略。4、有一点可以了解下,就是Delphi的发展(可以理解为编译器的发展)中,应该是先有Interface的实现(Delhi3中?),后来才实现MS的Com的架构(Dephi5中?),也就才有了IUnknown。所以,在代码System单元中,可以看到Interface宣告在前。再有IUnknown = Interface的历史(不晓得是不是这样)5、另外,从观念上讲,接口归接口,Com只是MS实现接口的一套方法途径。Com意为Component Object Modal,非串口之类的意思。6、如果上面这段代码的做法目的是要实现Com的一些AP,应该注意下代码中宣告的方法的数据类型,以及各方法调用的编译约定。应该采用对应的WideXXXX、OleVariant诸如此类的数据类型来定义(比如string类型,应该用WideString类型,string类型为Dephi自己创建的数据类型,不是Com和OS所要),另外调用方法约定比如Safecall等也要注意下。否则,在不同进程间,或者跨电脑间可能会有问题发生。老弟加油,完毕!