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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 Chely
09/10/2007 - 09:50 | Informe spam
Muchisimas gracias Guille
Estuve mirando en tu pagina antes de postear, y no di con ello.
Muchas gracias otra vez
Un saludo

Chely



On 8 oct, 19:57, "Guillermo 'guille'"
wrote:
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
Respuesta Responder a este mensaje
#3 Guillermo guille
10/10/2007 - 17:24 | Informe spam
por eso he puesto el buscador de google en mi sitio en primera fila, para
que resulte más fácil encontrar las "cosillas" que tengo, je, je.

Nos vemos
Guillermo

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


"Chely" wrote in message
news:
Muchisimas gracias Guille
Estuve mirando en tu pagina antes de postear, y no di con ello.
Muchas gracias otra vez
Un saludo

Chely



On 8 oct, 19:57, "Guillermo 'guille'"
wrote:
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
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida