Returns the index of the first barcode, in the class object's barcode data array, that is a duplicate of the barcode at the specified index.
#include "ltwrappr.h"
L_INT LBarCode::GetFirstDuplicated (nIndex)
Index of a barcode in the class object's barcode data array. This is a zero-based index. nIndex must be >= 0 and less than the total number of barcodes read using LBarCode::Read.
Value | Meaning |
---|---|
>=0 | Index of the barcode, in the class object's barcode data array, that is the first duplicate of the barcode at the specified index. |
<0 | An error occurred. Refer to Return Codes. |
As an example, a call to LBarCode::Read reads ten barcodes into the class object's barcode data array. LBarCode::IsDuplicated is called for the item at index 3 in the array, and TRUE is returned. Therefore one or more barcodes in the array are duplicates of the specified item.
Calling LBarCode::GetFirstDuplicated returns the index of the first barcode in the array that is a duplicate of the barcode at index 3 in the array. Suppose this value is 0. The barcode present at index zero in the array is the first duplicate of the barcode at index 3.
Calling LBarCode::GetNextDuplicated with nIndex set to 3 will return the index of the next barcode in the array that is a duplicate of the barcodes at index 0 and 3. Suppose this value is 9. Therefore the barcodes at index 0, index 3, and index 9 of the array are all duplicates.
LBarCode::Read returns the total number of barcodes read.
For complete sample code refer to BarCode demo.
L_INT LBarCode_GetFirstDuplicatedExample(HWND hWnd, LBarCode &LeadBarCode)
{
L_INT nRet;
pBARCODEDATA pBarCodeData=NULL;
L_INT nDupIndex, nDupCount;
if (LeadBarCode.IsDuplicated(3))
{
L_TCHAR szBuffer[1024];
memset(szBuffer, 0, sizeof(szBuffer));
nDupCount = LeadBarCode.GetDuplicatedCount(3);
nDupIndex = LeadBarCode.GetFirstDuplicated(3);
wsprintf(szBuffer, TEXT("This Bar Code is duplicated in %d different locations."), nDupCount);
MessageBox(hWnd, szBuffer, TEXT("Notice!"), MB_OK);
if (nDupIndex >= 0)
{
pBarCodeData = LeadBarCode.GetBarCodeDataItem(nDupIndex);
if (!pBarCodeData)
LBase::DisplayErrorFromList(hWnd);
memset(szBuffer, 0, sizeof(szBuffer));
// Print the first duplicated barcode data
wsprintf(szBuffer, TEXT("Data is %hs\nType %d\nUnits %d\nPosX %d\nPosY %d\nWidth %d\nHeight %d\n\n"),
pBarCodeData->pszBarCodeData,
pBarCodeData->ulType,
pBarCodeData->nUnits,
pBarCodeData->rcBarLocation.left,
pBarCodeData->rcBarLocation.top,
abs(pBarCodeData->rcBarLocation.right - pBarCodeData->rcBarLocation.left),
abs(pBarCodeData->rcBarLocation.bottom - pBarCodeData->rcBarLocation.top));
MessageBox(hWnd, szBuffer, TEXT("BarCode Info."), MB_OK);
nRet = LeadBarCode.Free(pBarCodeData);
if(nRet != SUCCESS)
return nRet;
pBarCodeData = NULL;
// find the next (second) duplicated barcode
nDupIndex = LeadBarCode.GetNextDuplicated(nDupIndex);
if (nDupIndex >= 0)
{
pBarCodeData = LeadBarCode.GetBarCodeDataItem(nDupIndex);
if (!pBarCodeData)
LBase::DisplayErrorFromList(hWnd);
memset(szBuffer, 0, sizeof(szBuffer));
wsprintf(szBuffer, TEXT("Data is %hs\nType %d\nUnits %d\nPosX %d\nPosY %d\nWidth %d\nHeight %d\n\n"),
pBarCodeData->pszBarCodeData,
pBarCodeData->ulType,
pBarCodeData->nUnits,
pBarCodeData->rcBarLocation.left,
pBarCodeData->rcBarLocation.top,
abs(pBarCodeData->rcBarLocation.right - pBarCodeData->rcBarLocation.left),
abs(pBarCodeData->rcBarLocation.bottom - pBarCodeData->rcBarLocation.top));
MessageBox(hWnd, szBuffer, TEXT("BarCode Info."), MB_OK);
LeadBarCode.Free(pBarCodeData);
pBarCodeData = NULL;
}
}
}
else
MessageBox(hWnd, TEXT("This Barcode is not duplicated ..."), TEXT("Error!"), MB_OK);
return SUCCESS;
}