Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-09-2013
mordaz mordaz is offline
Miembro
 
Registrado: mar 2008
Posts: 32
Poder: 0
mordaz Va por buen camino
Copiar un apuntador struct a un struct idéntico

Buenas tardes,

Estoy trabajando con algo que me esta volviendo loco, es algo muy simple y no encuentro una solución lógica. Estoy usando algunas librerías de Phidgets para un control IR, el problema es el siguiente:

En las librerías esta declarada la siguiente función, que lo que hace es transmitir un código IR a cualquier dispositivo.

Código Delphi [-]
__declspec (dllimport)
     int __stdcall CPhidgetIR_Transmit (CPhidgetIRHandle phid, unsigned char *data, CPhidgetIR_CodeInfoHandle codeInfo);

Uno de los parámetros que es con el que tengo problemas es un struct definido como CPhidgetIR_CodeInfoHandle

Código Delphi [-]
     typedef struct _CPhidgetIR_CodeInfo
     {
      int bitCount;        
      CPhidgetIR_Encoding encoding;
      CPhidgetIR_Length length;  
      int gap;        
      int trail;        
      int header[2];      
      int one[2];        
      int zero[2];        
      int repeat[26];      
      int min_repeat;  
      unsigned char toggle_mask[(128 / 8)];
      int carrierFrequency;
      int dutyCycle;  
     } CPhidgetIR_CodeInfo, *CPhidgetIR_CodeInfoHandle;

En una función de lectura del dispositivo me regresa como parámetro un apuntador a este struct, el punto es que necesito copiarlo para guardarlo y usarlo después puesto que cuando lo quiero usar este struct ya no existe en memoria y por lo tanto el apuntador no me lleva a nada útil.
La funcion que regresa este struct es la siguiente.

Código Delphi [-]
CPhidgetIR_CodeInfo CI; //Struct creado por mi para almacenar los datos del apuntador

int __stdcall LearnHandler(CPhidgetIRHandle phid, void *userPtr, unsigned char *data, int dataLength, CPhidgetIR_CodeInfoHandle codeInfo)
{
  CI=*codeInfo;
}

Hasta ahí parece que todo marcha bien, le doy lectura a mi struct y contiene una copia del struct, el punto es que cuando ejecuto la función de transmisión con mi copia me regresa un error controlado, no así cuando la ejecuto con el apuntador dentro de la función donde realizo la copia.

La ejecución de la función la realizo así:

Código Delphi [-]
int result =CPhidgetIR_Transmit(IRHandle, code, &CI);

Trate de poner el menor código posible. De antemano gracias por su ayuda.
Responder Con Cita
  #2  
Antiguo 04-09-2013
mordaz mordaz is offline
Miembro
 
Registrado: mar 2008
Posts: 32
Poder: 0
mordaz Va por buen camino
Ya lo resolví, parece que era un error de la libreria, mi copia era correcta.

Saludos..
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como usar struct en c++ builder antonio302050 C++ Builder 2 05-02-2010 22:49:39
struct "a pelo" Guillermo80 C++ Builder 3 04-03-2008 01:18:26
struct y record c4_esp_VR API de Windows 3 07-08-2007 18:35:47
Diferencia conceptual entre struct y typedef struct Crandel C++ Builder 2 27-12-2004 01:06:35


La franja horaria es GMT +2. Ahora son las 03:48:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi