王
王少东
Unregistered / Unconfirmed
GUEST, unregistred user!
系统环境:WindowXP + CB6.0
问题一:
TTest125ServerDisp srvr;
DCOMConnection1->Connected = true;
srvr.Bind( DCOMConnection1->GetServer() );
......
问:为什么将上面的第三行代码换成:(scktsrvr.exe 服务已启动)
srvr.Bind( SocketConnection1->GetServer() );
通过判断 srvr.IsBound() 的值为 false 可知,应用服务器绑定失败!
问题二:
在应用服务器上定义了接口的一个方法:
STDMETHODIMP TwImpl::GetDataBaseNames(BSTR* ret) // 参数 ret 类型为 out
{
int i;
TStrings* DBNames = new TStringList;
try
{
m_DataModule->Session1->GetDatabaseNames(DBNames);
*ret = Variant(DBNames->Text);
delete DBNames;
}
catch(Exception &e)
{
return Error(e.Message.c_str(),IID_Iw);
}
return S_OK;
}
在客户端的代码为:
IwDisp srvr;
DCOMConnection1->Connected = true;
Variant DBNames;
srvr.Bind(DCOMConnection1->GetServer());
if (srvr.IsBound())
DBNames=srvr->GetDataBaseNames();
执行到最后一句时,总是产生异常信息:
'this->GetDataBaseNames((BSTR*)&ret)':发生意外
我想问的是:如何在C++Builder6.0中,在客户端如何获取应用服务器返回的串变量?
问题一:
TTest125ServerDisp srvr;
DCOMConnection1->Connected = true;
srvr.Bind( DCOMConnection1->GetServer() );
......
问:为什么将上面的第三行代码换成:(scktsrvr.exe 服务已启动)
srvr.Bind( SocketConnection1->GetServer() );
通过判断 srvr.IsBound() 的值为 false 可知,应用服务器绑定失败!
问题二:
在应用服务器上定义了接口的一个方法:
STDMETHODIMP TwImpl::GetDataBaseNames(BSTR* ret) // 参数 ret 类型为 out
{
int i;
TStrings* DBNames = new TStringList;
try
{
m_DataModule->Session1->GetDatabaseNames(DBNames);
*ret = Variant(DBNames->Text);
delete DBNames;
}
catch(Exception &e)
{
return Error(e.Message.c_str(),IID_Iw);
}
return S_OK;
}
在客户端的代码为:
IwDisp srvr;
DCOMConnection1->Connected = true;
Variant DBNames;
srvr.Bind(DCOMConnection1->GetServer());
if (srvr.IsBound())
DBNames=srvr->GetDataBaseNames();
执行到最后一句时,总是产生异常信息:
'this->GetDataBaseNames((BSTR*)&ret)':发生意外
我想问的是:如何在C++Builder6.0中,在客户端如何获取应用服务器返回的串变量?