Metadati

mercoledì 28 marzo 2007 - 10.35

cable Profilo | Junior Member

Ciao a tutti,
sono nuovo di questo forum ed è poco che utilizzo VB2005.
Ho realizzato un programma per leggere dati da una scheda ma ad un certo punto mi solleva sempre un'eccezione:"il tipo in fase di esecuzione della matrice non corrisponde al sottotipo
registrato nei metadati".
Questo problema si verifica quando richiamo una funzione che utilizza una struttura che ho creato io ed è la seguente:

Public Structure TPCANMsg
Dim ID As Integer
Dim MSGTYPE As Byte
Dim LEN_Renamed As Byte
<VBFixedArray(7)> Dim daTa() As Byte
Public Sub Initialize()
ReDim daTa(7)
End Sub
End Structure

Avevo già fatto la stessa cosa in VB6 ma non dava problemi, in VB2005 non riesco proprio a farla funzionare, spero vivamente possiate aiutarmi.

Grazie

Mauro

Carlik Profilo | Junior Member

Come inizializzi l'oggetto?
Perchè a me sembra un problema di tipi...

cable Profilo | Junior Member

Ho risolto... era un problema di come definivo la matrice di 8 elementi, ho riscritto la struttura come :

<StructLayout(LayoutKind.Sequential, Pack:=1)> Public Structure TPCANMsg
Public ID As Integer ' 11/29 bit identifier
Public MSGTYPE As Byte ' Bits from MSGTYPE_*
Public LEN As Byte ' Data Length Code of the Msg (0..8)
<MarshalAs(UnmanagedType.ByValArray, sizeconst:=8)> _
Public DATA As Byte() ' Data 0 .. 7
End Structure

ed ora funziona tutto (almeno per ora!!!)

Probabilmente definendola come avevo fatto prima la funzione non riconosceva la matrice di 8 elementi.

Grazie comunque e alla prossima.
Mauro
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5