Example
[Error Handling]

This example shows the error handling concept of TBarCode. More...
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;
 }

© 2008 All rights reserved by TEC-IT Datenverarbeitung GmbH
Generated on Tue May 5 15:50:35 2009 for TEC-IT TBarCode Library 9.2 with doxygen 1.5.3