Lorem Ipsum/DOL Differet Solmena

Separat existentie 2010 Unee MYT por scientie, musica, sport etc, litot Europa usa li sam Vocabular Lingues, differe solmen in li grammatica, li pronunciation. Delete this widget in Dashboard and add yours. This is just an example. Read More

Problema con API CopyMemory

lunes, 30 de septiembre de 2013

Buen día con todos, pido su ayuda con respecto a la utilización del API CopyMemory

He encontrado varias maneras de declararlo:

Subroutine CopyMemory(ref long destination, long Source , long Length) Library "kernel32.dll" Alias for "RtlMoveMemory" 
Subroutine CopyMemory(any Destination, ulong Source, long Length) Library "kernel32.dll" Alias for "RtlMoveMemory" 
Function long CopyMemory(REF STRUCTURE Destination[], long Source, long Length) library "kernel32.dll" Alias For "RtlMoveMemory;Ansi"
SUBROUTINE CopyMemory( REF STRUCTURE d, LONG s, LONG l) LIBRARY 'KERNEL32.DLL' ALIAS FOR RtlMoveMemory

pero al momento de hacer el llamado en algunos casos me sale que el parametro de referencia no es el tipo de dato aunque le haya declarado antes, y en otros sale el siguiente error:

Error: Error calling external function %s

lo que estoy haciendo es utilizar un OCX de un equipo biométrico, éste equipo me devuelve todos los datos en Long y tengo un evento que los recibe en tiempo real, pero al momento de pasar uno de ellos a esta API CopyMemory, no me devuelve el dato esperado de manera correcta.

En sí el código de VB6 que trato trasladar a PB es el siguiente:

Private Sub S35TPC1_OnReceiveEvent(ByVal M_No As Long, ByVal evType As Long, evData As Long, ByVal evTr As Long, ByVal evAct As Long, ByVal evTime As Long)   
    Dim sz As String
    Dim szType As String
    Dim szIpAddr As String
    szIpAddr = LongIP2Dotted(M_No)
    
    Dim strData As String, strByte(IDNUMBER_LENGTH - 1) As Byte
    If evType = 1 Or evType = 3 Then
        CopyMemory strByte(0), evData, 20   ...............................................AQUI ME SURGE EL PROBLEMA EN PB 10.5
        strData = Val(StrConv(strByte, vbUnicode))
        
    End If
    
    szType = "UNKNOWN"
    Select Case evType
        Case 1
            sz = "" & szIpAddr & ",Type=GLOG,ID=" & strData & ",Mode=" & evTr & ",Verify=" & evAct
            lstEvent.AddItem "Time=" & puiRtcSeconds2YMDHMS(evTime)
        Case 3
            sz = "M_Ip=" & szIpAddr & ",Type=VERIFY_OK,ID=" & strData
    End Select
    
    lstEvent.AddItem sz
End Sub
 
La línea de código que indico donde me genera problemas es donde al API CopyMemory le doy dos variables un array de tipo Byte y un Long que es lo que me envia el biométrico.
es en esa línea donde me surgen los errores arriba mencionados,


Espero alguien pueda ayudarme y gracias por adelantado.

Saludos,

Frank P.

--
 
---
Has recibido este mensaje porque estás suscrito al grupo "TechEra" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a techeraz9+unsubscribe@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

0 comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.