{ errval.pas } program ErrVal; {$IfDef VER80} uses SnipTool, SnipData, SysUtils, WinTypes, WinProcs, DbiProcs, DbiTypes, DbiErrs; {$Else} uses WinTypes, WinCrt, Strings, DbiProcs, DbiTypes, DbiErrs, SnipTool, SnipData; {$EndIf} {===================================================================== Code: ErrVal(); Input: None. Return: None. Description: IDAPI functions return error codes to inform the calling program if the function succeded or failed. The return value will be equal to DBIERR_NONE when the function was successfull. This examples shows how to get information about an error when an IDAPI function returns a value other than DBIERR_NONE. ===================================================================== } var rslt: DBIResult; { Value returned from IDAPI functions } hDb: hDBIDb; { Handle to the Database } Category: INT16; { Category of the error } Code: INT16; { Code of the error (code within the category) } dbi_status: array[0..DBIMAXMSGLEN+1] of CHAR; { Error string } Message: array[0..DBIMAXMSGLEN+201] of CHAR; { Message String } begin Screen('*** Getting Error Information ***'); InitOutput; { Open a Standard database (used to access Paradox and dBASE tables), by using a nil database type. Note that this will fail because we have not initialized IDAPI. } Screen(' Attempt to open the database...'); Screen(' Error Expected - Engine not initialized.'); rslt := DbiOpenDatabase('', nil, dbiREADWRITE, dbiOPENSHARED, nil, 0, nil, nil, hDb); if (rslt <> DBIERR_NONE) then { Check for error } begin Screen(' Got an Error'); { The ErrCat() macro returns the Category of the error } Screen(' Get the Category of the error...'); Category := ErrCat(rslt); { The ErrCode() macro returns the Code within the Category of the error } Screen(' Get the Code of the Error...'); Code := ErrCode(rslt); { The DbiGetErrorString() function returns the error string associated with the error message } Screen(' Get the Error String...'); DbiGetErrorString(rslt, dbi_status); { Format the string which will display the information } StrPCopy(Message, ' Error! category: ['+ IntToStr(Category)+'] code: ['+IntToStr(Code)+ '] Message: '+dbi_status); { Display the information } Screen(' Display the Error information...'); Screen(StrPas(Message)); end; { Check for Re-Initialization Error } if (rslt = DBIERR_NOTINITIALIZED) then { Check if the the error } begin { is the expected error } Screen(' Expected condition - IDAPI not Initialized'); end else {received an error which we did not expect } begin Screen(' Unexpected Condition - terminating example'); end; Screen(''); CloseOutput; Screen('*** End of Example ***'); end.