使用TSocketConnection调用应用服务器的接口事件的问题
应用服务器定义的方法如下:
//-------------------------
STDMETHODIMP TPGDynamicSQLDemoImpl::GetAllTables(TVariant* vTables)
{
__try
{
TStringList * tblList = new TStringList();
PGDynamicSQLDemo->adocDSQL->GetTableNames(tblList,false);
int Bounds[2]={0,1};
vTables=VarArrayCreate(Bounds,tblList->Count-1,varVariant);
for (int i=1;i<tblList->Count;i++)
vTables[i]=tblList->Strings[i];
delete tblList;
}
__finally
{
return S_OK;
}
}
//-------------------------
STDMETHODIMP TPGDynamicSQLDemoImpl::AAAA(BSTR ABC)
{
__try
{
AnsiString abcd=AnsiString(ABC);
Application->MessageBox(abcd.c_str(), NULL, MB_OK);
}
__finally
{
return S_OK;
}
}
使用TDCOMConnection调用正常,但把TDCOMConnection换成TSocketConnection就有问题,TSocketConnection服务已启动,能够在服务器端显示对话框,但运行结束提示AV错误。
Variant vtblList;
IPGDynamicSQLDemoDisp PGDynamicSQLDemo;
__try
{
if (!DCOMConnection1->Connected)
DCOMConnection1->Connected=true;
PGDynamicSQLDemo.Bind(DCOMConnection1->GetServer());
//PGDynamicSQLDemo->GetAllTables(vtblList);
PGDynamicSQLDemo->AAAA(WideString("aaaaaaaa"));
}
__finally
{
if (PGDynamicSQLDemo.IsBound())
PGDynamicSQLDemo.Unbind();
return;
}
大家帮忙看一看。