Prinzipiell funktioniert dieser Code, aber ich bekomme eben nur das erste Element brauche aber das 3. und dazu muss ich die Struktur als drei-dimensionale Array übergeben:
Code: Alles auswählen
BEGIN STRUCTURE CMENTRYDATA
MEMBER ULONG mflCtrl
MEMBER ULONG mflDependency
MEMBER ULONG mulReserve
MEMBER U_INT16 mcbData
MEMBER BYTE test
MEMBER BYTE test1
MEMBER SZSTR mabData SIZE CM_MAX_STRING_LEN *2
END STRUCTURE
...
FUNCTION CodeMeterReadData(nProductCode)
LOCAL cmEntryData:=CMENTRYDATA():new() // Hier sollte ein 3 Dimensionales Array angelegt werden
LOCAL nEntryDataNum := 3
nHandleCm:=@WibuCM32:CmAccess(CM_ACCESS_LOCAL_LAN, @cmAcc)
res = @WibuCM32:CmGetInfo(nHandleCm, CM_GEI_ENTRYDATA, @cmEntryData, cmEntryData:_sizeof_()* nEntryDataNum) // Hier sollte das 3 Dimensionales Array verwendet werden
...
In C sieht das das so:
Code: Alles auswählen
const int num = 3;
CMENTRYDATA cmEntryData[3];
int res;
memset(&cmEntryData, 0, sizeof(CMENTRYDATA) * num);
res = CmGetInfo(hcmse, CM_GEI_ENTRYDATA, &cmEntryData, sizeof(CMENTRYDATA) * num);