TBarCode Library 11
TBarCode Library 11
|
This example shows the error handling concept of TBarCode. More...
This example shows the error handling concept of TBarCode.
If BCCreate() returns any value other than zero (ErrOK) you might use the following function to get detailled information about the occured error.
For retrieving error texts see also BCGetErrorTextExt().
CString GetFullBCErrorText ( t_BarCode* pBarCode, // IN: pointer to barcode struct ERRCODE eCode // IN: last occurred error code ) { CString sErrorText; TCHAR szBuffer[70] = {0}; LPTSTR szErrorMsg = szBuffer; CString sWrongChar; LPTSTR szCCError = _T(""); BCGetErrorText(eCode, szBuffer, (sizeof(szBuffer)/sizeof(szBuffer[0]))-1); // retrieve error information if (BCGet2DCompositeComponent(pBarCode) != eCC_None) // was a composite symbol requested? { BOOL bErrinCC = BCGet_CompSym_ErrorInCC(pBarCode); // error in the composite or linear component? szCCError = bErrinCC ? _T("in 2D Composite Component") : _T("in linear component") ; // maybe a composite component was requested, which is not allowed for the basic linear barcode type if (bErrinCC && eCode == W32toTEC(ERROR_NOT_SUPPORTED)) { szCCError = _T("in Composite Symbology"); szErrorMsg = _T("Composite Component not supported for the selected barcode type"); } } // or the user supplied invalid data (not all characters can be encoded with the selected barcode type) if (eCode == W32toTEC(ERROR_INVALID_DATA)) { INT nPos = BCGetInvalidDataPos(pBarCode); CString sData = GetDocument()->GetData(); CString sHex; // show the wrong character if (nPos >= 0 && nPos < sData.GetLength()) { if (!isgraph(sData.GetAt(nPos))) sHex.Format(" (ASCII Code 0x%X)", sData.GetAt(nPos) & 0xff); sWrongChar.Format("'%c' at position %d%s", sData.GetAt(nPos) & 0xff, nPos+1, sHex); } } else if (eCode == NTE_BAD_LEN) { // barcode needs a specific number of input characters // retrieve number of needed characters (data + check-digit) INT nLen = BCGetMaxLenOfData(BCGetBCType(pBarCode)); // check if wrong character position is available (-1 = not available) if (nLen > 0) { INT nLenCD = BCGetCheckDigits(pBarCode, NULL, 0); nLenCD = (nLenCD < 0) ? 0 : nLenCD; // the check-digit need not to be part of input data sWrongChar.Format(" (needs %d chars)", nLen - nLenCD); } } // this would be our final error message to the user sErrorText.Format(_T("Error %s: %s%s!"), szCCError, (LPCSTR) szErrorMsg, sWrongChar); //FormatMessage return sErrorText; }