急,有关COM中的异常处理,safecall和stdcall,Idispatch

rustle 2003-12-04 05:33:23
急,有关COM中的异常处理,safecall和stdcall,Idispatch

safecall必须应用于继承自IDispatch的接口的方法,这样Delphi可以使异常传递而不依赖于HResult

我想在我的COM Object中使用safecall的方式,请问我应该如何去实现IDispatch中定义的方法?使用safecall的方式会有什么影响?

我需要做的是一组互相关联的Class/Interface,参数和返回值中都会传递我所定义的Interface,Delphi的Help中说:all method parameter and result types must be automatable. (The automatable types are Byte, Currency, Real, Double, Real48, Integer, Single, Smallint, AnsiString, ShortString, TDateTime, Variant, OleVariant, and WordBool.),会有问题吗?

另外,请问大家在使用Delphi作COM Object的时候会如何去规划异常?有没有一个合适的通用做法?

不知道说清楚没有 :(
...全文
155 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sz1008 2003-12-05
  • 打赏
  • 举报
回复
safecall和stdcall到底区别在哪儿?
safecall=stdcall + HResult;

我需要做的是一组互相关联的Class/Interface,参数和返回值中都会传递我所定义的Interface,Delphi的Help中说:all method parameter and result types must be automatable. (The automatable types are Byte, Currency, Real, Double, Real48, Integer, Single, Smallint, AnsiString, ShortString, TDateTime, Variant, OleVariant, and WordBool.),会有问题吗?
作好对应的类型转换的话是不会有问题的
rustle 2003-12-05
  • 打赏
  • 举报
回复
halfdream(哈欠) ,多谢关注

明白了一点儿

还不是很清楚

safecall和stdcall到底区别在哪儿?
eastliangliang 2003-12-05
  • 打赏
  • 举报
回复
我一直用自动化对象,懒惰啊,虽然效率上损失点,可是系统小,看不出影响。
关注一下。
冰杯可乐 2003-12-04
  • 打赏
  • 举报
回复
……
try
……
except
on E: Exception do
raise Exception.Create('哇,有异常!请看:[' + E.Message + '],请稍后重试。');
end;
halfdream 2003-12-04
  • 打赏
  • 举报
回复
一,我觉得没有什么太麻烦的,也许是没有理解到你的意思..
STDCALL返回的东西我都会OLECHECK检查一下返回值的.

二,干脆让COM组件支持自动化有什么不好呢?
你写的COM继承于TAutoIntfObject或TAUTOOBJECT,也不会增加代码量.
不会有什么影响.

三,让接口在参数中传递也是常用的...




1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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