社区
网络及通讯开发
帖子详情
MIDAS中,中间层如何自定义函数并在client上调用?
gjxjq
2003-03-19 10:53:54
rt
...全文
74
7
打赏
收藏
MIDAS中,中间层如何自定义函数并在client上调用?
rt
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiaoyu
2003-08-21
打赏
举报
回复
mark
gjxjq
2003-04-11
打赏
举报
回复
感谢各位,特别感谢热心的天涯浪子!!!
RomanticProgrammer
2003-03-19
打赏
举报
回复
在客户端Import type libray,把产生的.cpp文件和.h文件加入你的工程。
然后用IDispath,双接口或者VTable调用都可以。
看看书上关于COM的部分吧。
WhyAndAnswer
2003-03-19
打赏
举报
回复
客户端
#include "..._TLB.h"
ITestDisp Srv;
Srv.Bind(LPDISPATCH(DM->DCOMConnection1->AppServer));
就可以用Srv调用服务端函数了
结束时
if(Srv.IsBound())
{
Srv.Unbind();
}
WhyAndAnswer
2003-03-19
打赏
举报
回复
看一下书
服务端 远程数据模块View->Type Library->New method 刷新 写代码
天涯浪子
2003-03-19
打赏
举报
回复
远程调用方式
一、 服务器端接口方法:Remote Data Module 为 rdmAAA
/*执行一个select count(*) from ...*/
STDMETHODIMP TrdmAAAImpl::F_ExecSQL(BSTR asSQL, int* aiCount)
{
//asSQL是一个in参数,aiCount是一个out参数
int liCount=0;
AnsiString lsSQL = AnsiString((WideString)asSQL);
try
{
m_DataModule->qryA2->Close();
m_DataModule->qryA2->SQL->Clear();
m_DataModule->qryA2->SQL->Add(lsSQL);
m_DataModule->qryA2->Prepared = true;
m_DataModule->qryA2->Open();
liCount = m_DataModule->qryA2->Fields->Fields[0]->AsInteger;
m_DataModule->qryA2->Close();
*aiCount = liCount; //必须把给out参数赋值放在执行的最后
}
catch(Exception &E)
{
return Error(E.Message.c_str(),IID_IrdmAAA);
}
return S_OK;
}
二、 客户端调用方式:
注:客户端Project中已加入_TLB.cpp文件,且要调用接口方法的Unit已包含 _TLB.h。客户端连接组件 cntAAA。
方式1、
WideString lsSQL = "select count(*) from Customers";
int liCount;
cntAAA->AppServer.OleFunction("F_ExecSQL ",lsSQL,&liCount);
Label2->Caption = liCount;
注:这种方式对DCOM、Socket都不行
///////////////////////////////////////////////////////////////////////////////////////////////
方式2、
WideString lsSQL = "select count(*) from Customers";
int liCount;
IrdmAAADisp aaa(LPDISPATCH(cntAAA->AppServer));
aaa.F_ExecSQL(lsSQL,&liCount);
Label2->Caption = liCount;
注:这种方式对DCOM可行(但有点问题),对Socket不行
//////////////////////////////////////////////////////////////////////////////////////////////
方式3、
头文件里:类的public变量
IrdmAAADisp aaa;
cpp文件里:
WideString lsSQL = "select count(*) from Customers";
int liCount;
aaa = (IDispatch*)cntAAA->GetServer();
aaa->F_ExecSQL(lsSQL,&liCount);
Label2->Caption = liCount;
注:这种方式对DCOM可行,对Socket不行
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
方式4、
WideString lsSQL = "select count(*) from Customers";
int liCount;
IrdmAAADisp aaa((IDispatch *)(cntAAA ->AppServer));
aaa.F_ExecSQL(lsSQL,&liCount);
Label2->Caption = liCount;
注:这种方式对DCOM可行,对Socket不行
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
方式5、
WideString lsSQL = "select count(*) from Customers";
int liCount;
IrdmAAADisp aaa;
try
{
aaa.Bind(cntAAA ->GetServer());
aaa->F_ExecSQL(lsSQL,&liCount);
Label2->Caption = liCount;
}
__finally
{
if(aaa.IsBound()) aaa.Unbind();
}
注:这种方式对DCOM可行,对Socket不行
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
方式6、
WideString lsSQL = "select count(*) from Customers";
int liCount;
IDispatch* disp = (IDispatch *)cntAAA->AppServer;
IrdmAAADisp aaa((IrdmAAA *)disp);
aaa. F_ExecSQL(lsSQL,&liCount);
Label2->Caption = liCount;
注:(1)这种方式对DCOM、Socket都行
(2)注意:如果把cntAAA->AppServer 改为cntAAA->GetServer() 会出错“Access Violation”;如果把aaa. F_ExecSQL(lsSQL,&liCount)改为aaa.->F_ExecSQL(lsSQL,&liCount),也会出错”Access Violation”。
方式7、
WideString lsSQL = "select count(*) from Customers";
int liCount;
cntAAA->AppServer.Exec(Procedure("F_ExecSQL")<<lsSQL<<&liCount);
Label2->Caption = liCount;
注:这种方式对DCOM、Socket都行
MiDaS
错误处理与调试:常见问题解决方案集锦
你是否在使用
MiDaS
进行单目深度估计时遇到过模型加载失败、推理结果异常或性能瓶颈等问题?作为当前最先进的单目深度估计算法之一,
MiDaS
在实际应用
中
常因环境配置、输入数据或硬件限制等因素导致各种异常。本文汇总了15类常见错误场景,提供系统化的诊断流程和解决方案,帮助开发者快速定位问题并优化模型部署效果。 读完本文后,你将能够: - 解决90%以上的
MiDaS
部署相关错误 - 优化模型加载速度与...
BCB开发
MIDAS
(DataSnap)多层应用程序
BCB开发
MIDAS
(DataSnap)多层应用程序 作者: vrknights 日期: 2012 年 2 月 11 日 很多时候我们需要编制这样的程序,即多个客户端访问并操作服务器上的数据库
中
的数据。若你想使用的方式不是WEB网站,则通常我们可以有两种方式,1.客户端直接连接远程数据库,登录并操作数据。2.客户端不能直接连接远程数据库,而是连接到远程服务器上的服务端程序,将需要进行
多层数据库开发十四:剖析几个
MIDAS
示范程序
第十四章 剖析几个
MIDAS
示范程序
MIDAS
是Multi-Tier Distributed Application Services Suite的简称,为Delphi 4的一个关键技术。对于初学者来说,
MIDAS
具有相当的难度,因此,这一章详细剖析几个
MIDAS
示范程序,以帮助读者理解和掌握
MIDAS
技术。 与一般的数据库应用程
主题:的
中
间层
框架 第一节
主题:<插件式>的
中
间层
框架 时间:2004-12-31 15:00 主讲:D10.天地弦 2004-12-31 14:56:15 /:>D10.天地弦(185511468) 开始吧,我们 2004-12-31 14:57:22 /:>D10.天地弦(185511468) 请大家先看图 http://www.jqk.net.c...
delphi datasnap
中
间件
http://www.cnblogs.com/hnxxcxg/category/353141.html 最简
中
间件集群方案 摘要: 客户端每天从代理服务器获取一个有效的
中
间件的IP地址和端口号,客户端当天之内都连接此
中
间件。如果客户端连不上
中
间件,就重新从代理服务器获取另一个有效的
中
间件的IP地址和端口号。 每个
中
间件启动时都主动连接代理服务器,
中
间件每隔几
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章