程序要调用一些COM组件,现在根据组件的tlb文件生成了一些封装类,及其构造函数。
在程序的几个消息处理函数中要生成这些组件封装类的对象,调用组件的接口函数。
现在函数中的处理都没有问题,但在调试时,函数返回时会报读内存的错,build后运行exe则不报错。
我在使用组件对象的时候只用封装类的Create函数创建了组件,但封装类没有free函数,所以也没有调用显示的析构函数,不知是不是因为这个原因报错,如果要析构释放,又应该怎样释放呢?多谢指点!  

解决方案 »

  1.   

    com组件公布的应该是接口,
    不要声明一个类的变量即
    a:TSomeObject;
    而声明其实现的接口
    a:ISomeObject;
    如果TSomeObject=class(tobject,ISomeObject)的化那么在该变量的释放你就不用管了,如果再加上a:=nil;就更保险了
      

  2.   

    首先要明白Com对象的生命周期不是应用程序中管理的,而是系统管理的。如楼上所说其实并不是释放Com对象,不过却是必须的,是很正确的