Page 1 of 1

Retomando el hilo me tropiezo con HB_HHASKEY - SOLUCIONADO

PostPosted: Thu Nov 28, 2019 4:58 pm
by Cgallegoa
Hola amigos, un fuerte abrazo para todos. Vuelvo a mis caminos de programador.

Actualicé a la última versión de FWH y al intentar compilar el ejemplo BLOCKCHAIN.PRG obtengo el siguinte error:

Error: Unresolved external '_HB_FUN_HB_HHASKEY' referenced from C:\FWH\LIB\FIVEHX.LIB|TBLOCKCHAIN


Le he dado la vuelta pero no encuentro solución.

Utilizo XHARBOUR, Borland 7.3 y PellesC, y sé que esto se debe a las diferencias entre Harbour y xHarbour,

Probé con
Code: Select all  Expand view
#ifdef __XHARBOUR__
   #xtranslate hb_HHasKey( [<x,...>] )         => HHasKey( <x> )
#endif
 

pero no me funcionó.

Supongo que esto es debido a que la Clase TBlockchain, en donde se usa HB_HHASKEY, está contenida en FIVEHX.LIB, y debe estar programada con la sintaxis de HARBOUR. En la actualización a FWH 19.09 no se incluye el código de la clase por lo que no puedo modificarla para compatibilizarla con XHARBOUR.

Me preocupa que algunas de las nuevas clases de los últimos siete años no queden a mi alcance por incompatibilidad con XHARBOUR

¿ Alguna sugerencia de cómo se puede resolver ?

Re: Retomando el hilo me tropiezo con HB_HHASKEY

PostPosted: Thu Nov 28, 2019 5:10 pm
by karinha
Code: Select all  Expand view

#include "hbcompat.ch"
 


Code: Select all  Expand view

#ifdef __XHARBOUR__
   ...
   /* Hash item functions */
   #xtranslate hb_Hash( [<x,...>] )            => Hash( <x> )
   #xtranslate hb_HHasKey( [<x,...>] )         => HHasKey( <x> )
   #xtranslate hb_HPos( [<x,...>] )            => HGetPos( <x> )
   #xtranslate hb_HGet( [<x,...>] )            => HGet( <x> )
   #xtranslate hb_HSet( [<x,...>] )            => HSet( <x> )
   #xtranslate hb_HDel( [<x,...>] )            => HDel( <x> )
   ...
#else
   ...
   /* Hash item functions */
   #xtranslate Hash( [<x,...>] )           => hb_Hash( <x> )
   #xtranslate HHasKey( [<x,...>] )        => hb_HHasKey( <x> )
   #xtranslate HGetPos( [<x,...>] )        => hb_HPos( <x> )
   #xtranslate HGet( [<x,...>] )           => hb_HGet( <x> )
   #xtranslate HSet( [<x,...>] )           => hb_HSet( <x> )
   #xtranslate HDel( [<x,...>] )           => hb_HDel( <x> )
   ...
#endif
 

Re: Retomando el hilo me tropiezo con HB_HHASKEY

PostPosted: Thu Nov 28, 2019 6:23 pm
by cnavarro
Pon esto en tu código, y prueba
Veré de añadir ese #xtranslate hb_HHasKey( [<x,...>] ) => HHasKey( <x> ) al prg de la clase
Y no te preocupes, cualquier cosilla que te encuentres se resolverá

Code: Select all  Expand view


Function hb_HHasKey( x, cKey  )
Return HHasKey( x, cKey )

 

Re: Retomando el hilo me tropiezo con HB_HHASKEY

PostPosted: Thu Nov 28, 2019 6:55 pm
by Cgallegoa
João y C.Navarro, gracias por la respuesta.

Probé sus sugerencias pero el problema persiste.

El asunto es que el ejemplo que viene en FWH\Samples, "blockchain.prg", crea una instancia de TBlockChain():New() para ejemplificar cómo usar esta clase. Es TBlockChain la que llama internamente a la función HB_HHASKEY.

Entonces, para que lo que me sugieren funcione debería adicionarlo en la Clase TBlockChain, cuyo código no está disponible , y no en el ejemplo "blockchain.prg".

A ver si Antonio me tira una mano.

Re: Retomando el hilo me tropiezo con HB_HHASKEY

PostPosted: Thu Nov 28, 2019 7:23 pm
by karinha

Re: Retomando el hilo me tropiezo con HB_HHASKEY

PostPosted: Thu Nov 28, 2019 8:27 pm
by cnavarro
Ok, Carlos, por aquí estaré

Re: Retomando el hilo me tropiezo con HB_HHASKEY

PostPosted: Thu Nov 28, 2019 9:37 pm
by Cgallegoa
João gracias por la guía. No encontré la solución, pero me guió hacia Cristobal Navarro, autor de la Clase.

Re: Retomando el hilo me tropiezo con HB_HHASKEY

PostPosted: Thu Nov 28, 2019 10:01 pm
by cnavarro
Asi es, Carlos, dame un correo
Cristobal

Re: Retomando el hilo me tropiezo con HB_HHASKEY

PostPosted: Thu Nov 28, 2019 10:08 pm
by Cgallegoa
Cristobal, veo que tú fuiste el autor de la clase TBLOCKCHAIN.

La clase está integrada a FIVEHX.LIB en el instalador de FWH-19.09, pero no está incluído su correspondiente código.

El ejemplo BlockChain.prg crea una instancia de TBlockChain() y es dentro de la clase que se definen los HASH, por lo tanto es allí donde se hace el llamado a la function HB_HHASKEY() que es propia de HARBOUR, Su equivalente en XHARBOUR es HHASKEY().

En virtud de que la carga de los hash se instanció dentro de TBlockChain, el hacer el "#xtranslate hb_HHasKey( [<x,...>] ) => HHasKey( <x> )" dentro del "prg" del ejemplo, BlockChain.prn, no funciona. Creo que el "xtranslate debería ser en el "prg" en donde está TBlockChain, pero como indiqué, el código fuente de la clase no está incluído en el instalador de FWH-19.09.

Las preguntas son: si hay alguna forma de obligar a hacer el "xtranslate" fuera del prg causante del entuerto :lol: , o si me puedes facilitar el código de la clase para hacerle la adecuación y que se pueda utilizar con XHARBOUR, o si Antonio Linares pudiera ayudarme.

Gracias por tu ayuda

Re: Retomando el hilo me tropiezo con HB_HHASKEY

PostPosted: Thu Nov 28, 2019 10:09 pm
by Cgallegoa
Cristobal,
<micorreo> que ha sido borrado por el moderador ( Cristobal )
Muchas gracias

Re: Retomando el hilo me tropiezo con HB_HHASKEY

PostPosted: Thu Nov 28, 2019 10:12 pm
by cnavarro
Carlos, ahora te envío la clase modificada ( el fichero .obj ) para que lo sustituyas en tu lib
Los cambios ya los he subido al repositorio por lo que serán publicados en la próxima versión de Fw
Cualquier cosa, ya sabes, por aqui o a mi mail

Pd.: para modificar la lib -> C:\borland\bcc7\bin\Tlib FIVEHX.LIB -+ TBlockChain.obj

( Haz una copia de seguridad de la LIB original por si acaso )

Re: Retomando el hilo me tropiezo con HB_HHASKEY

PostPosted: Thu Nov 28, 2019 10:17 pm
by cnavarro
Enviado a tu correo
Borra tu correo del post anterior, bueno, con tu permiso ya lo borro yo

Re: Retomando el hilo me tropiezo con HB_HHASKEY

PostPosted: Thu Nov 28, 2019 10:54 pm
by Cgallegoa
Cristobal, perfecto. Funcionó de maravilla :D

Una abrazo y muchas gracias.

Re: Retomando el hilo me tropiezo con HB_HHASKEY - SOLUCIONADO

PostPosted: Thu Nov 28, 2019 10:56 pm
by cnavarro
Me alegro,
Otro abrazo para ti