Rodrigo,
Tu idea es muy buena, el problema está en que en C el tamaño de la estructura tiene que ser exacto ya que se accede a los datos a través del desplazamiento de cada miembro. Intentar convertir un número xBase a un número en C automáticamente no es posible por el tamaño de los datos, podría ser WORD (2 bytes), int LONG, ULONG, DWORD, etc (4 bytes), double (8 bytes)... no es posible hacerlo automáticamente y encima entra en juego la alineación que haga el compilador con esos datos (inserta bytes dicionales a la estructura para que esté alineada en memoria).
Otra cosa es hacerlo para una estructura determinada, en tu caso la estructura RECT, es fácil, tan sólo hay que generar unos cuantos bytes, 16 concretamente, 4 enteros seguidos, pero el propio código de generar esos bytes sería casi el mismo que el usar el sistema extendido para acceder a los datos del array (como lo haces en tu ejemplo) y quedaría más complicado de leer.
Las funciones del sistema extendido no son nada complejas y no consumen apenas instrucciones, se dedican a adaptar tipos de datos básicamente, no te debe dar apuro usarlas, es la vía más segura para compartir detos entre xBase y otros lenguajes.
_________________ Un saludo,
Bruno Cantero
www.c3compiler.com
|