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 :
QUESTO è l'esempio originalecodice:HCEXPORTC HCStatus HCAPI BC_GetBarcode ( HCHandle readerHandle, HCHandle barcodeHandle, WCHAR * barcode, DWORD * sizeWChar )
Il primo parametro è rappresenta l'handle del lettore, il secondo mi dice quale codice leggere.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
Nel terzo parametro io dovrei trovare il codice letto, l'ultimo parametro è la lunghezza del codice.
Io ho tradotto nella seguente maniera : "
La funzione va a buon fine, però quando provo ad utilizzare il valore di Barcode(WS) mi da sempre una serie di caratteri "strani".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; . . .
Come va tradotta correttamente questa dichiarazione? oppure il problema è nella lettura del valore ?
Attendo fiducioso, Grazie 1000
Nicola

Rispondi quotando
