急,有关COM中的异常处理,safecall和stdcall,Idispatchsafecall必须应用于继承自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的时候会如何去规划异常?有没有一个合适的通用做法?不知道说清楚没有 :(
解决方案 »
- 超级sql难题!高手快入!
- oracle数据库导出导入问题
- 请教关于对控制面板控制的问题?
- 各位师兄请留个QQ好吗?
- delphi中能不能正确显示由Access的OEL对象加入的数学公式?
- RichEdit控件有粘贴字数限制?
- 如何隐藏TreeView中的一列
- 请问各位大侠:我编的数据库在窗体上用多个dbedit来显示,窗体上还有dbnavigator可用他来指示所显示的上一条下一条,用他上面的添加按钮也能
- 如何在程序中建立一个进程,并获得该进程的主窗口句柄
- 小鸟问题:DELPHI带的那个INTERBASE默认的用户和密码是多少啊?
- 请问一下怎么对一个数组进行赋值?
- IWDBGrid的问题??
STDCALL返回的东西我都会OLECHECK检查一下返回值的.二,干脆让COM组件支持自动化有什么不好呢?
你写的COM继承于TAutoIntfObject或TAUTOOBJECT,也不会增加代码量.
不会有什么影响.三,让接口在参数中传递也是常用的...
try
……
except
on E: Exception do
raise Exception.Create('哇,有异常!请看:[' + E.Message + '],请稍后重试。');
end;
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.),会有问题吗?
作好对应的类型转换的话是不会有问题的