• Jueves 28 de Marzo de 2024, 22:12

Autor Tema:  Referenciar Una Variable A Través De Un Apuntador  (Leído 1054 veces)

fxge

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Referenciar Una Variable A Través De Un Apuntador
« en: Lunes 18 de Septiembre de 2006, 22:19 »
0
Tengo una llamada a la API que regresa entre sus argumentos un apuntador a una estructura en memoria. Existen varias posibles estructuras (aunque yo conozco en todo momento cual de ellas está siendo regresada) Mi problema es como tomar la dirección que se regresa para referenciar el contenido de la estructura siendo esta variable. En pascal sería algo como:

case TIPO of
  1 : a := lpData^.s  
  2 : a := lpData^.f
end;

donde lpData es el apuntador regresado por la API

¿Existe alguna forma de hacer esto en VB6?

Gracias de antemano.

cpmario

  • Miembro HIPER activo
  • ****
  • Mensajes: 629
    • Ver Perfil
    • http://www.cpimario.com
Re: Referenciar Una Variable A Través De Un Apuntador
« Respuesta #1 en: Martes 19 de Septiembre de 2006, 03:26 »
0
En VB existe algo así:
Código: Text
  1. Private Type POINTAPI
  2.     X As Long
  3.     Y As Long
  4. End Type
  5.  
Si colocas la API que estás usando es probable que te podamos dar más ayuda.

 :comp:

fxge

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: Referenciar Una Variable A Través De Un Apuntador
« Respuesta #2 en: Martes 19 de Septiembre de 2006, 14:48 »
0
Tengo una áplicación (cliente) que activa un segundo proceso en paralelo (servidor)  para manejar la adquisicón de datos a partir de unidades de conversión AD conectadas vía USB. Los procesos se comunican mediante mensajes cuya recepción se controla a través de subclassing.

Por ejemplo, el servidor envía cierta data usando Sendmessage:

Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

en wParam se indica "acerca de que habla" y lParam apunta a una de varias posibles estructuras que contienen los datos

El programa en VB6 tiene una ruitina para el subclassing que recibe wParam y lParam. Mi problema es recuperar el contenido de lparam.

Se me ocurre una manera poco "elegante" de hacerlo definiendo una serie de rutinas (una por cada tipo de estrutura) y usar un select case para llamarlas, Algo así;


Dim A : RecordType1
Dim B : RecordType2
.
.
.
select case wParam
Case 1
   A = Recupera1(lParam)
Case 2
   B = Recupera2(lParam)
...

Function Recupera1 (byRef E as RecorType1) as RecordType1
   Recupera1 = E
end function

Function Recupera2 (byRef E as RecorType2) as RecordType2
   Recupera2 = E
end function

No lo he probado pero creo que trabajaría. Sin embargo quería saber si existe un camino más directo y flexible.

Gracias,