请问各位大虾,safecall调用的机制是什么?我只有15分了:((15分)

  • 主题发起人 主题发起人 penal
  • 开始时间 开始时间
P

penal

Unregistered / Unconfirmed
GUEST, unregistred user!
safecall调用的机制是什么,编译器对这类方法作了哪些手脚
我定义一个只读属性Count,Delphi产生一个方法
function Get_Count: OleVariant; safecall;

一个自动化对象的方法应该返回一个HRESULT的值吧,如果我想
对返回的值作特别处理,应该如何
 
关注ing[:)]
 
function Get_Count(out RetVal:OleVariant):HRESULT;stdcall;
 
我觉得可能是这样。safecall的函数只是内部实现的,Delphi为safecall
函数加了一层包装,来处理内部实现的异常处理。如果safecall函数抛出
异常,那么Delphi会检测到,并返回一个错误值: E_UNEXPECTED(-2147418113)。
当然如果你想返回一个特定的值,不妨抛出EOleException
procedure TTestSafecall.RaiseAException(Dummy: Integer);
begin
raise EOleException.Create('', E_POINTER, '', '', 0);
end;
这样,E_POINTER就作为真正的返回值返回给客户程序。
至于Delphi如何封装safecall,我对Delphi的异常处理机制不熟,只好等
大侠们说一说了。[:)]
 
没人继续,结帐.............................[:(]
 
后退
顶部