De VB a C#. Problema con AddressOf

04/10/2007 - 14:03 por chely | Informe spam
Hola compañer@s,
mi problema es el siguiente:
Estoy pasando una aplicación de VB6 a C#.Net, y me he encontrado con
el problema del AddressOf, y sobre todo si estoy manejando un API de
por medio

Os pongo el código por si alguien puede ayudarme:


'Declaracion del API
Private Declare Function rdOnError Lib "sb4lib" (ByVal lpx As Long) As
Long


Sub Inicio ()

rtnval = rdOnError(AddressOf error)
.
.
.
End Sub

Public Sub error(ByVal x As Long)
.
.
.
End Sub




Como puedo hacer ese AddressOf en C#??? Delegados quizá??
Muchas gracias a tod@s de antemano, y un saludo

Chely
 

Leer las respuestas

#1 Guillermo guille
08/10/2007 - 19:57 | Informe spam
tendrás que crear un delegado con la misma firma que la función que se le
pasa a esa función de la DLL y usarlo para llamar al método Error.
tal como tienes el código, el delegado sería algo así:
delegate void ErrorCallback(int x);

Y la función del API sería así (es de memoria, pero creo que más o menos):
//Private Declare Function rdOnError Lib "sb4lib" (ByVal lpx As Long) As
Long
[System.Runtime.InteropServices.DllImport("sb4lib.dll")]
private extern static int rdOnError( ErrorCallback lpx);

recuerda que los Long de VB6 son int de C#.

Esto a lo mejor te ayuda un poco:
http://www.elguille.info/NET/vb6ane...iasAPI.htm

Fíjate en la definición de EnumChildWindows que usa un delegado en la
llamada.

Nos vemos
Guillermo

Microsoft MVP Visual Basic desde 1997
Tus consultas en los foros del Guille: http://foros.elguille.info/


wrote in message
news:
Hola compañ,
mi problema es el siguiente:
Estoy pasando una aplicación de VB6 a C#.Net, y me he encontrado con
el problema del AddressOf, y sobre todo si estoy manejando un API de
por medio

Os pongo el código por si alguien puede ayudarme:


'Declaracion del API
Private Declare Function rdOnError Lib "sb4lib" (ByVal lpx As Long) As
Long


Sub Inicio ()

rtnval = rdOnError(AddressOf error)
.
.
.
End Sub

Public Sub error(ByVal x As Long)
.
.
.
End Sub




Como puedo hacer ese AddressOf en C#??? Delegados quizá??
Muchas gracias a de antemano, y un saludo

Chely

Preguntas similares