Get the mame of the method which has raised an exception

Hello,

I would like to get the name of the method which has raised an exception:

Example:

//////////////////////
// BEGIN OF EXAMPLE //
//////////////////////
Function TMyObject.Calculate(A,B: Integer) : Integer;
Begin
    Try
        Result := A div B;
    Except
        ErrorProcess(Self,ExceptAddr,'Can''t calculate');
    End;
end;

Procedure ErrorProcess(ErrObject: TObject; ErrPtr: Pointer; ErrMsg: String);
Var
    ErrClassName: String;
    ErrMethodName: String;
    AllErrMsg: String;
Begin
    ErrClassName := ErrObject.ClassName;
    ErrMethodName := ErrObject.MethodName(ErrPtr);

    AllErrMsg := '[' + ErrClassName + '][' + ErrMethodName + ']: ' + ErrMsg;

    ShowMessage(AllErrMsg);
End;
////////////////////
// END OF EXAMPLE //
////////////////////

When I execute the Calculate Function - like
InstanceOfMyObject.Calculate(5,0) - I can't get the 'ErrMethodName' because
'MethodName' function doesn't work. Propably because the 'ExceptAddr'
pointer is not on the header of Calculate Method but on the instruction
which has raised.

Can anyone help me ?

Thanks in advance.