Retomando el hilo me tropiezo con HB_HHASKEY - SOLUCIONADO

Cgallegoa
Posts: 530
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador
Contact:

Retomando el hilo me tropiezo con HB_HHASKEY - SOLUCIONADO

Post 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

#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 ?
Last edited by Cgallegoa on Thu Nov 28, 2019 10:55 pm, edited 1 time in total.

Saludos,

Carlos Gallego

*** FWH-26.03, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1 - MSVC 2022 ***

User avatar
karinha
Posts: 8720
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Retomando el hilo me tropiezo con HB_HHASKEY

Post by karinha »

Code: Select all | Expand


#include "hbcompat.ch"
 


Code: Select all | Expand


#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
 
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
cnavarro
Posts: 6763
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Retomando el hilo me tropiezo con HB_HHASKEY

Post 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



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

 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Cgallegoa
Posts: 530
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador
Contact:

Re: Retomando el hilo me tropiezo con HB_HHASKEY

Post 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.

Saludos,

Carlos Gallego

*** FWH-26.03, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1 - MSVC 2022 ***

User avatar
karinha
Posts: 8720
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Retomando el hilo me tropiezo con HB_HHASKEY

Post by karinha »

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
cnavarro
Posts: 6763
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Retomando el hilo me tropiezo con HB_HHASKEY

Post by cnavarro »

Ok, Carlos, por aquí estaré
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Cgallegoa
Posts: 530
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador
Contact:

Re: Retomando el hilo me tropiezo con HB_HHASKEY

Post by Cgallegoa »

João gracias por la guía. No encontré la solución, pero me guió hacia Cristobal Navarro, autor de la Clase.

Saludos,

Carlos Gallego

*** FWH-26.03, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1 - MSVC 2022 ***

User avatar
cnavarro
Posts: 6763
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Retomando el hilo me tropiezo con HB_HHASKEY

Post by cnavarro »

Asi es, Carlos, dame un correo
Cristobal
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Cgallegoa
Posts: 530
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador
Contact:

Re: Retomando el hilo me tropiezo con HB_HHASKEY

Post 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

Saludos,

Carlos Gallego

*** FWH-26.03, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1 - MSVC 2022 ***

Cgallegoa
Posts: 530
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador
Contact:

Re: Retomando el hilo me tropiezo con HB_HHASKEY

Post by Cgallegoa »

Cristobal,
<micorreo> que ha sido borrado por el moderador ( Cristobal )
Muchas gracias

Saludos,

Carlos Gallego

*** FWH-26.03, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1 - MSVC 2022 ***

User avatar
cnavarro
Posts: 6763
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Retomando el hilo me tropiezo con HB_HHASKEY

Post 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 )
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
Posts: 6763
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Retomando el hilo me tropiezo con HB_HHASKEY

Post by cnavarro »

Enviado a tu correo
Borra tu correo del post anterior, bueno, con tu permiso ya lo borro yo
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Cgallegoa
Posts: 530
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador
Contact:

Re: Retomando el hilo me tropiezo con HB_HHASKEY

Post by Cgallegoa »

Cristobal, perfecto. Funcionó de maravilla :D

Una abrazo y muchas gracias.

Saludos,

Carlos Gallego

*** FWH-26.03, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1 - MSVC 2022 ***

User avatar
cnavarro
Posts: 6763
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Retomando el hilo me tropiezo con HB_HHASKEY - SOLUCIONADO

Post by cnavarro »

Me alegro,
Otro abrazo para ti
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
jnavas
Posts: 492
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela
Contact:

Re: Retomando el hilo me tropiezo con HB_HHASKEY - SOLUCIONADO

Post by jnavas »

Saludos colegas,
Esta funcionalidad está disponible en las actuales versiones de FW?
Algunas empresas nos estan solicitando su implementación para la trazabilidad de sus transacciones.

Resumen claro y directo sobre la funcionalidad y beneficios de implementar blockchain desde el documento original hasta el asiento contable:
Beneficios
1. Integridad de datos: Cualquier alteración en el documento cambia el hash, lo que permite detectar manipulaciones.
2. Transparencia contable: Cada asiento puede ser auditado contra su documento original sin ambigüedad.
3. Seguridad: Los datos quedan protegidos mediante criptografía, sin necesidad de intermediarios.
4. Trazabilidad: Se puede seguir el ciclo completo del documento, desde su creación hasta su impacto contable.
5. Automatización de auditorías: Facilita la verificación automática de documentos y registros contables.
Funcionalidad:
La implementación de blockchain permite vincular cada documento digital (como una factura escaneada o PDF) con su correspondiente asiento contable mediante un hash criptográfico. Este hash actúa como una huella digital única del archivo original. Al registrar ese hash en la transacción contable, se garantiza que:
1. El documento no ha sido modificado.
2. Existe una trazabilidad directa entre el soporte documental y el registro financiero
3. Se puede verificar la autenticidad del documento en cualquier momento.
4. Para las conciliaciones Bancarias de manera digital, asegurar que el archivo no ha sido alterado luego de su utilización desde la conciliación bancaria digital.
Post Reply