COM问题求教!
各位高手:求教一个COM问题。
现在我急着要写一个程序,用于为某算法作实验,而且必须在四月前写出文章来,但是碰到了一个才学粗浅的我无法解决的问题,我在国内外几个论坛上都求过帮助,只是收效甚微,所以只能冒昧的向您求助,失礼之处,还望海涵!
我要用微软提供的正则表达式匹配类,存在于vbscript.dll中,其中的第二个typelib是版本1.0的,如果装过script 5.5,那么第三个就是版本为5.5的。我在VC6.0(windows2000 advanced server)中,从这个tlb生成新的类,然后如下调用它:
if(m_regExp.CreateDispatch(__uuidof(RegExp)) == FALSE)
{
AfxMessageBox("CreateDispatch Failed!");
return;
}
IMatchCollection2 * temp;
m_regExp.SetIgnoreCase(TRUE);
m_regExp.SetPattern(szPattern);
if(m_regExp.Test(szContent)){} //***********
其中的RegExp定义在头文件中,我从RegExp.tlh中拷贝所得!
但是执行到打***这一句时就出现不该出现的问题,会有Exception冒出来!我跟踪过,但最后跟不进去了。
在OLEDISP2.CPP中Row 343:
// make the call
SCODE sc = m_lpDispatch->Invoke(dwDispID, IID_NULL, 0, wFlags,
&dispparams, pvarResult, &excepInfo, &nArgErr);
结果返回结果sc为负,为什么?其中pvarResult, excepInfo, nArgErr都是在前面刚刚生成的,没错,dwDispID=10005, wFlags=1, dispparams也是对的。
因而实在查不出来,希望您能于百忙中帮我诊断一下,不胜感激!
万分感谢!