C/Front: Handling fatal exceptions

jhoekjhoek Member Posts: 216
My Delphi 7.0 application uses cfront.dll to read information from a Navision database. There are cases however, when an end user's license does not contain the required C/Front granule. In that case, the application should continue to work, but with limited functionality.

Currently, I seem to be unable to prevent the exception that is generated because of the missing granule from terminating my application. Does anyone know how I can "preview" exceptions, and decide to ignore them, even if C/Front considers them fatal?
Kind regards,

Jan Hoek
Product Developer
Mprise Products B.V.

Comments

  • apprinsapprins Member Posts: 4
    Hi Jan,

    Create Delphi functions like these:
    procedure ExceptionHandler(ErrorCode: DBL_S32; IsFatal: DBL_BOOL) cdecl far;
    begin
      raise Exception.Create(ExceptionMsg);
    end;
    
    procedure MessageHandler(Msg: PChar; MsgType: DBL_U32; ErrorCode: DBL_S32) cdecl far;
    begin
      ExceptionMsg :=
        Format(
          'Error %d in module %d.'#13#10'%s',
          [Errorcode mod $10000, Errorcode div $10000, Msg]);
    end;
    

    and then register these functions like this:
    DBL_SetExceptionHandler(@ExceptionHandler);
    DBL_SetMessageShowHandler(@MessageHandler);
    

    HTH

    BTW: I'm currently developing Delphi DataSet components which enable you to show Navision data in Delphi Data aware controls like DBGrid, DBEdit and so on. These components will greatly reduce development time. I probably will make them available as shareware for a fair price.

    André P. Prins
    Twain Development
    André P. Prins
    Twain Development
Sign In or Register to comment.