Utilizacion RAPI

22/11/2004 - 16:11 por Victor S. | Informe spam
Hola estoy haciendo una pequeña incursión en el mundo las RAPI (Remote API
para hacer cosas hacia pockets pc).
Encontre un muy buen documento en la pagina de soporte de microsoft que
explicaba como traspasar archivos desde el pc al dispositivo y viceversa:

http://support.microsoft.com/defaul...-us;307256

El problema reside en que el codigo esta para visual basic 6.0 y a mi me
interesa usar esto con .NET Framework y VB.NET. El problema me viene en el
uso de la sentencia AddressOF conjuntamente a una de las varibles de una
estructura:

Código VB6
Public Type RAPIINIT
cbSize As Long
heRapiInit As Long ' esta linea y la siguiente almacenan
direcciones de memoria (lo que devuelve un AddressOf)
hrRapiInit As Long
End Type

' No entiendo demasiado para que esta funcion, la veo un poco inutil.
Private Function GetSub(Addr As Long) As Long
'Used for the init Call.
GetSub = Addr
End Function

' Esta si que la veo necesaria
Public Sub ConnectedRapi()
'Used for the init Call - Do not remove.
End Sub

Public Function RapiConnect() As Boolean
'Initiates a connection and returns true
' if it connected, false if it did not.

Dim pRapiInit As RAPIINIT

On Error GoTo RapiConnect_Err

With pRapiInit
.cbSize = Len(pRapiInit)
.heRapiInit = GetSub(AddressOf ConnectedRapi) ' Esta linea es la que
no consigo transformar a .NET
End With
Call CeRapiInitEx(pRapiInit)
RapiConnect = RapiGetCEOSVersionString <> ""
Exit Function

RapiConnect_Err:
RapiConnect = False
End Function

Al final, como he dicho, he conseguido traducir todo el código a VB.NET a
excepcion de la linea en la que digo que me da un error. Para ser exactos me
dice que no puede almacenar un Delegado en un tipo Long, cosa comprensible.
Lo unico es que no se como transformar el long en un delegado.

Gracias.
Victor
 

Leer las respuestas

#1 Manuel Romero
22/11/2004 - 17:44 | Informe spam
AddressOf te da la direccion de memoria de la rutina, y heRapiInit debe ser
un puntero a la direccion, o algo similar

"Victor S." escribió en el mensaje
news:
Hola estoy haciendo una pequeña incursión en el mundo las RAPI (Remote API
para hacer cosas hacia pockets pc).
Encontre un muy buen documento en la pagina de soporte de microsoft que
explicaba como traspasar archivos desde el pc al dispositivo y viceversa:

http://support.microsoft.com/defaul...-us;307256

El problema reside en que el codigo esta para visual basic 6.0 y a mi me
interesa usar esto con .NET Framework y VB.NET. El problema me viene en


el
uso de la sentencia AddressOF conjuntamente a una de las varibles de una
estructura:

Código VB6
Public Type RAPIINIT
cbSize As Long
heRapiInit As Long ' esta linea y la siguiente almacenan
direcciones de memoria (lo que devuelve un AddressOf)
hrRapiInit As Long
End Type

' No entiendo demasiado para que esta funcion, la veo un poco inutil.
Private Function GetSub(Addr As Long) As Long
'Used for the init Call.
GetSub = Addr
End Function

' Esta si que la veo necesaria
Public Sub ConnectedRapi()
'Used for the init Call - Do not remove.
End Sub

Public Function RapiConnect() As Boolean
'Initiates a connection and returns true
' if it connected, false if it did not.

Dim pRapiInit As RAPIINIT

On Error GoTo RapiConnect_Err

With pRapiInit
.cbSize = Len(pRapiInit)
.heRapiInit = GetSub(AddressOf ConnectedRapi) ' Esta linea es la


que
no consigo transformar a .NET
End With
Call CeRapiInitEx(pRapiInit)
RapiConnect = RapiGetCEOSVersionString <> ""
Exit Function

RapiConnect_Err:
RapiConnect = False
End Function

Al final, como he dicho, he conseguido traducir todo el código a VB.NET a
excepcion de la linea en la que digo que me da un error. Para ser exactos


me
dice que no puede almacenar un Delegado en un tipo Long, cosa


comprensible.
Lo unico es que no se como transformar el long en un delegado.

Gracias.
Victor


Preguntas similares