Forum: Programmieren allgemein
by Assarbad,
23. Feb 2011
Das packed muß hier definitiv raus. Wegen orderId und swRevisionPrefix.
Du kannst es auch so deklarieren (hier ist dann packed oder nicht egal):
TAnnotation =
packed record
deviceType : array of UINT8;
orderId : array of UINT8;
padding1 : UINT8;
hwRevision : UINT16;
swRevisionPrefix : UINT8;
Forum: Programmieren allgemein
by Assarbad,
23. Feb 2011
Sie müssen jedenfalls nicht identisch sein, sind es aber in den meisten Fällen. Würde also auch erstmal von stdcall ausgehen.
Es wird ein Pointer übergeben.
Allerdings hast du nur eine struct angegeben:
typedef struct {
UINT32 size; // size of struct = sizeof(CBF_FUNCTIONS)
CBF_DATA_WRITE cbf_data_write;
CBF_DATA_READ cbf_data_read;
Forum: Programmieren allgemein
by Assarbad,
22. Feb 2011
Hatte ich oben schon ;)
Aber was ich nicht verstehe ist dann dein Code:
TCbfDataRWProc =
procedure(
DevHndl : UINT32;
pAddr : PTDevAddr;
BufLen : UINT32;
pBuffer : PTUINT8;
Forum: Programmieren allgemein
by Assarbad,
22. Feb 2011
Welcher Typ ist denn IOXS? ... du hast bspw. keinen Rückgabewert in deiner Delphi-Funktionsdeklaration.
Ansonsten hilft hier nur sich das Projekt (oder die Make-Datei) anzugucken. MSVC erlaubt es einzustellen welche Aufrufkonvention standardmäßig verwendet wird.
TCbfDataRWProc =
function(
DevHndl : UINT32;
pAddr : PTDevAddr;
BufLen : UINT32;
pBuffer :...