我用SOAPToolKit作的东西怎么也不好用,详情见内:(我怎么从来没有见到有微软专家回答问题?这是微软专区吗?)救救我吧!

AlexXXX 2001-10-25 09:54:41
一个组件的接口有一个方法
GetName([out,string]BSTR* bstrName);
用的是HighLevel的方式调用:
链接函数:
bool CDispatchsamplePlay0Dlg::Connect()
{

HRESULT hr;

UpdateData();

CoInitialize(0);

if(m_WSDLConnected != m_WSDLstring)
{
if (m_pSoapClient != NULL) m_pSoapClient.Release();
hr = m_pSoapClient.CreateInstance(__uuidof(SoapClient));
if(FAILED(hr))
{
DisplayHResult(_T("Cannot create SoapClient."), hr);
return false;
}
try
{
m_pSoapClient->mssoapinit((LPCTSTR)m_WSDLstring, _T(""), _T(""), _T(""));
}
catch(_com_error err)
{
DisplayFault(_T("Cannot initialize SoapClient. "));
return false;
}
m_WSDLConnected = m_WSDLstring;
}

return true;

}

使用的地方:
……
……
if(Connect())
{

// HRESULT hr;
DISPID dispid;
CString ParamText;
// EXCEPINFO ExceptInfo;
VARIANTARG params;
VariantInit(¶ms);

// Get dispatch ID corrisponding to method name.
hr = m_pSoapClient->GetIDsOfNames(IID_NULL, &pMethodName, 1, LOCALE_SYSTEM_DEFAULT, &dispid);
if(FAILED(hr))
{
DisplayHResult(_T("Cannot get dispatch id of calc method."), hr);
return;
}



DISPPARAMS dispparams;
dispparams.cArgs = 0;
dispparams.cNamedArgs = 0;
dispparams.rgdispidNamedArgs = NULL;
dispparams.rgvarg = NULL;

// Invoke the specified method.
hr = m_pSoapClient->Invoke(dispid, IID_NULL, LOCALE_SYSTEM_DEFAULT,
DISPATCH_METHOD, &dispparams,¶ms,NULL,NULL);
if(FAILED(hr))
{
DisplayFault(_T("Invoke of calc method failed."));
}
else
{
MessageBox("Initialize success!");
}

}
……
……
错误提示:0x80070057——参数错误
我对Invoke调用不了解,救救我吧。
...全文
102 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
AlexXXX 2001-10-26
  • 打赏
  • 举报
回复
SOAPToolKit似乎没有什么人在用啊。不过这个问题还是搞明白了。
VARIANTARG params;
这个声明错误。
应该是
VARIANT params;
只好给自己加分了。
AlexXXX 2001-10-26
  • 打赏
  • 举报
回复
有人懂SOAPToolKit吗?有人吗?有人吗?有人吗?有人吗?有人吗?有人吗?有人吗?有人吗?有人吗?有人吗?有人吗?有人吗?有人吗?有人吗?有人吗?有人吗?有人吗?有人吗?有人吗?有人吗?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!欲哭无泪啊
AlexXXX 2001-10-25
  • 打赏
  • 举报
回复
补充:
是在
hr = m_pSoapClient->Invoke(dispid, IID_NULL, LOCALE_SYSTEM_DEFAULT,
DISPATCH_METHOD, &dispparams,¶ms,NULL,NULL);
这里出的错!!
内容概要:本文研究了基于PSCAD与MATLAB联合仿真平台的多区距离保护与智能故障定位协同方法,旨在提升高压输电线路在复杂运行条件下的保护精度与故障定位能力。研究融合全周期滑动DFT相量提取技术与Fortescue对称分量变换,构建适用于多区段输电线路的距离保护算法,并引入智能故障定位机制,实现故障区段的快速识别与精确定位。通过PSCAD进行电磁暂态建模与仿真,生成高保真故障数据,再利用MATLAB完成信号处理、保护判据计算与故障定位算法开发,充分发挥二者在高精度建模与高效算法实现方面的互补优势。研究覆盖系统建模、信号处理、保护逻辑设计、定位算法优化及联合仿真验证全流程,显著提升了距离保护的动作可靠性与故障定位的准确性。; 适合人群:具备电力系统继电保护基础知识,熟悉PSCAD和MATLAB仿真工具,从事电力系统自动化、继电保护算法开发或智能电网技术研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于高压输电线路的继电保护系统设计与优化;②用于开发高精度、自适应的智能故障定位算法;③实现PSCAD与MATLAB在复杂电力系统仿真与分析中的协同应用,提升科研与工程项目的开发效率。; 阅读建议:读者应结合文中提供的仿真模型与算法代码,动手实践联合仿真流程,重点关注DFT相量提取、对称分量变换的应用以及保护与定位算法的逻辑实现,建议在PSCAD中修改故障条件,在MATLAB中调试算法参数,以深入理解方法的鲁棒性与适应性。

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧