// BDE - (C) Copyright 1994 by Borland International #include "address.h" // The way to use this macro is to include the macro.h header // file where you want to use this function. Then pass an IDAPI // function as a parameter to the macro: // // #define CHKERR(parm) DBIError(__FILE__, __LINE__, \ // // #parm, parm) ; \ // // if ( GlobalDBIErr ) { \ // // return GlobalDBIErr ;} // // For Example: // CHKERR(DbiCreateTable(hDb, bOverWrite, &crTblDsc)) ; DBIResult GlobalDBIErr; static char szDBIStatus[(DBIMAXMSGLEN * 7)+1]; // Leave space for the extra messages. static char szMessage[(DBIMAXMSGLEN * 7)+1+110]; //==================================================================== // Name: DBIError(); // // Input: module name (pCHAR), line number (UINT16), Engine function // name (pCHAR), Result (DBIResult) // // Return: A DBIResult value. // // Description: // This is function that takes in the information of where // the error accured and displays that is a message box. // The information listed above explains how to use this // function inside of a macro. //==================================================================== DBIResult DBIError (pCHAR module, UINT16 line, pCHAR function, DBIResult retVal) { DBIErrInfo ErrInfo; if (retVal == DBIERR_NONE) { GlobalDBIErr = DBIERR_NONE; return retVal; } if (retVal != DBIERR_CANTFINDODAPI) { // Get as much error information as possible DbiGetErrorInfo(TRUE, &ErrInfo); // Make certain information is returned on the correct error if (ErrInfo.iError == retVal) { strcpy(szDBIStatus, ErrInfo.szErrCode); if (strcmp(ErrInfo.szContext1, "")) { strcat(szDBIStatus, ErrInfo.szContext1); } if (strcmp(ErrInfo.szContext2, "")) { strcat(szDBIStatus, ErrInfo.szContext2); } if (strcmp(ErrInfo.szContext3, "")) { strcat(szDBIStatus, ErrInfo.szContext3); } if (strcmp(ErrInfo.szContext4, "")) { strcat(szDBIStatus, ErrInfo.szContext4); } } else { DbiGetErrorString(retVal, szDBIStatus); } sprintf(szMessage, "Module:\t\t%s\nFunction:\t%s\nLine:\t\t%d\n" "Category:\t%d\nCode:\t\t%d\nError:\r\n\r\n%s", module, function, line, ErrCat(retVal), ErrCode(retVal), szDBIStatus); MessageBox(hErrorWnd, szMessage, "AddressBook Error", MB_ICONEXCLAMATION); // Finally set focus to the First name edit control. if(hErrorWnd == hMainWnd) { SetFNameFocus(); } else { PostMessage(hErrorWnd, WM_SETFOCUS,0,0L); } } else { MessageBox(NULL, "Cannot find IDAPI files: Check path.", "IDAPI Initialization Error", MB_ICONHAND | MB_OK); } GlobalDBIErr = retVal; return retVal; }