Visual Basic - URGENTE !!! - Conversion de tipos C - VB

Life is soft - evento anual de software empresarial
 
Vista:

URGENTE !!! - Conversion de tipos C - VB

Publicado por Omar (1 intervención) el 13/10/2004 16:13:33
Hola!Tego una DLL implementada en C. A una de las funciones de esta DLL se le pasa como argumento un BYTE *buffer. Desde VB6 declaro esta función de lasiguiente forma:
Declare Function pepo Lib "pepe.dll" (ByRef trama() As Byte, ByVal longitud As Integer) As Long

El codigo VB6 que utilizo es:

Dim trama(17) As Byte
Dim pep As Long

trama(0) = 240
trama(1) = 48
trama(2) = 48
trama(3) = 241
trama(4) = 49
trama(5) = 48
trama(6) = 72
trama(7) = 111
trama(8) = 108
trama(9) = 97
trama(10) = 32
trama(11) = 109
trama(12) = 117
trama(13) = 110
trama(14) = 100
trama(15) = 111
trama(16) = 242

pep = pepo(trama, 17)

He observado que no estoy pasandole bien el array deBytes. AYUDA, HELP, URGENTE. Mi jefe me va a cortar las pelotillas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:URGENTE !!! - Conversion de tipos C - VB

Publicado por Ruri (583 intervenciones) el 14/10/2004 04:42:07
Omar: La forma correcta de pasar una matriz a una función del API es pasando un puntero a la función. Para ello se redefine la función del api, la matriz se elimina de la declaración y se declara por referencia una variable con el mismo tipo de datos, luego a la función se le pasa el primer valor de la matriz, así:

Declare Function pepo Lib "pepe.dll" (trm As Byte, ByVal longitud As Integer) As Long

pep = pepo(trama(0), 17)

Tu sintaxis no es mala, pero sólo es válida para Dlls creadas especialmente para ser utilizadas con matrices de Vb u Ole 2.0
Esta sintaxis es la que siempre se utilizó y da resultados.

Espero que te sirva
Saludos Ruri
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar