急,有关COM中的异常处理,safecall和stdcall,Idispatch(200分)

  • 主题发起人 主题发起人 rustle
  • 开始时间 开始时间
R

rustle

Unregistered / Unconfirmed
GUEST, unregistred user!
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,do
uble, Real48, Integer, Single, Smallint, AnsiString, ShortString, TDateTime, Variant, OleVariant, and WordBool.),会有问题吗?
另外,请问大家在使用Delphi作COM Object的时候会如何去规划异常?有没有一个合适的通用做法?
不知道说清楚没有 :(
 
你使用应用程序向导New一个Automation Object,从这个对象继承下来,就可以不用自己实现IDispatch接口了。
自动化也可以传递接口的,所以应该没有问题。
用SafeCall方式规划异常的原则应该就是在服务端定义异常,原样抛出。客户端当然就要捕捉异常,并判断异常类型了。(个人意见)
 
多人接受答案了。
 
后退
顶部