Mi devo interfacciare ad una DLL per comandare un lettore di codici a barre.
La documentazione delle API è in C.
La funzione per leggere il codice a barre in C è dichiarata nel seguente modo :
codice:
HCEXPORTC HCStatus HCAPI BC_GetBarcode ( HCHandle readerHandle,
HCHandle barcodeHandle,
WCHAR * barcode,
DWORD * sizeWChar
)
QUESTO è l'esempio originale
codice:
returnStatus = BC_GetBarcode(readerHandle, HC_HANDLE_CURRENTITEM, NULL, &barcodeSize);
// Allocate the barcode buffer
barcode = new WCHAR[barcodeSize];
// Get the barcode data
returnStatus = BC_GetBarcode(readerHandle, HC_HANDLE_CURRENTITEM, barcode, &barcodeSize);
// Do something with the barcode data
Il primo parametro è rappresenta l'handle del lettore, il secondo mi dice quale codice leggere.
Nel terzo parametro io dovrei trovare il codice letto, l'ultimo parametro è la lunghezza del codice.
Io ho tradotto nella seguente maniera : "
codice:
BC_GetBarcode : Function (BarcodeReader : Pointer; BarcordeHandle : Longint; var Barcode : pWideString; var Size : Longint):LongInt; StdCall;
"
var
PW : pWideString;
WS : WideString;
.
.
.
// prima lettura x avere la lunghezza avvalorata
Stato := BC_GetBarcode(fBarcodeReader,HC_HANDLE_CURRENTITEM,PW,bCodeSize);
//seconda lettura x leggere il barcode
Stato := BC_GetBarcode(fBarcodeReader,HC_HANDLE_CURRENTITEM,PW,bCodeSize);
WS := ^PW;
.
.
.
La funzione va a buon fine, però quando provo ad utilizzare il valore di Barcode(WS) mi da sempre una serie di caratteri "strani".
Come va tradotta correttamente questa dichiarazione? oppure il problema è nella lettura del valore ?
Attendo fiducioso, Grazie 1000
Nicola