积极答复者
com对象作为返回参数反复使用问题

问题
-
想请教个问题:我在用com方式调用word,那么document获取对象要作为全局使用,但是获得一次,再次获得就有异常,请教是如何正常使用呢?
例子代码如下:
使用bcb
class TForm1 : public TForm
{
........................................
void __fastcall Button1Click(TObject *Sender);
Word_2k::TCOM_Document prop;
};
.....................................
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (OpenDialog1->Execute())
{
TVariant FileName = OpenDialog1->FileName.c_str();
CoWordApplication myCoWordApplication;
TCOM_Application AppPtr = myCoWordApplication.Create();
AppPtr->Documents->Open(&FileName,
TNoParam(),
TNoParam(),
TNoParam(),
TNoParam(),
TNoParam(),
TNoParam(),
TNoParam(),
TNoParam(),
TNoParam(),
TNoParam(),
TNoParam(),
(Word_2k::WordDocumentPtr*)&prop);
//AppPtr->ActiveDocument->PrintOut();
prop->PrintOut();
}
}
prop要在别的地方使用,所以在头文件声明,使用是没问题;但是如果这个Button1Click再次使用,
打开另外一个文档,就出错了,可以理解prop没有被清除,但是如何清除呢?
这只是一个例子,prop如果能作为prop=function(。。。);使用好像没有问题,但是有时候,
不止一个返回参数,则没法这样使用。
答案
-
每次使用完都要释放掉
下次重新来过
新浪微博http://weibo.com/xianglitian,欢迎围观
- 已标记为答案 Elegentin XieModerator 2012年10月31日 3:39
-
我自己解决了,
每次使用前要判别prop.IsBound() == true,
如果是,则.Unbind();再使用,就没有问题了。
- 已标记为答案 bailingsister 2012年10月18日 7:58
全部回复
-
每次使用完都要释放掉
下次重新来过
新浪微博http://weibo.com/xianglitian,欢迎围观
- 已标记为答案 Elegentin XieModerator 2012年10月31日 3:39
-
prop已经用过一次了,所以不为空呗,怎么清除呢?- 已标记为答案 bailingsister 2012年10月18日 7:54
- 取消答案标记 bailingsister 2012年10月18日 7:54
-
我自己解决了,
每次使用前要判别prop.IsBound() == true,
如果是,则.Unbind();再使用,就没有问题了。
- 已标记为答案 bailingsister 2012年10月18日 7:58