Salve a tutti,
Sto tentando di fare un programma che mi gestisca una periferica utilizzando le librerie e il materiale che la casa mi ha messo a disposizione. Tra le cose che ho trovato in rete c'è il sorgente di un piccolo applicativo scritto in Visual Basic 6.0 e iniziando da quello ho pensato di costruire il mio in VB.NET. Il mio problema è che ad un certo punto devo dichiarare una funzione di una libreria che a sua volta dovrà chiamare una mia funzione che (da quel che ho capito) si chiama "delagata". Lascio spazio al codice che è più chiaro:
Per utilizzare questa funzione mi portano in codice Visual Basic 6.0:codice:Private Declare Function GUICallbacks Lib "PvFw.dll" ( _ ByVal ModuleHandle As Long, ByVal GuiStreamingCasllback As Long, _ ByVal GuiStreamingCallbackCtx As Long, ByVal GuiStateCallback As Long, _ ByRef GuiStateCallbackCtx As Long) As Long
Se io tento di riportare nel mio progetto un codice simile quando chiamo la funzione GUICallbacks(myHandle, 0&, 0&, AddressOf GUI_STATE_CALLBACK, 0&) mi segnala che "l'espressione 'AddressOf' non può essere convertita in 'Long' perché 'Long' non è un tipo delegato.codice:'Usage Dim ret As Long ret = GUICallbacks(myHandle, 0&, 0&, AddressOf GUI_STATE_CALLBACK, 0&) End Sub 'dove mi dicono che Public Sub GUI_STATE_CALLBACK (ByVal GuiStateCallbackCtx As Long, _ ByVal GuiState As Long, ByVal Response As Byte, _ ByVal Message As Long, ByVal Progress As Byte, _ ByVal SampleBuffer As Long) Dim msg As String Select Case Message Case &H2030200 Msg = ... End Select 'Display Guidance message Form1.Label1.Caption = GuidanceMsg 'Exemle End Sub
Ho provato a vedere se creando un tipo "delegate" riuscivo a farlo diventare un Long (che dovrebbe essere un puntatore alla cella di memoria che contiene la funzione) ma il fatto che stia scrivendo qui è la prova che non ci sono riuscito.
Questa volta sono proprioo disperato. Utilizzo Visual Basic 2008 Professioal edition.

Rispondi quotando