Page 1 of 2

HDO. Fuente de la clase que gestiona las RDL...

Posted: Thu Dec 01, 2016 7:37 pm
by xmanuel
Algunos me habeis pedido a modo de estudio algún fuente de HDO.
Os dejo el codigo completo de la clase THDORDL que se encarga de la gestion de la RDL es com la RDDRegister de las RDD.
Como todas las clase de HDO está hecha en C completamente.

Code: Select all

/***
 * Proyecto: Harbour Data Objects (HDO)
 * Fichero: hdoRDL.c
 * Descripcion: Gestion de de RDLs
 * Autor: Manu Exposito 2015-16
 * Fecha: 10/01/2016
 */

/*
 * Notas:
 * Solo tiene una DATA de solo lectura con una tabla Hash
 * { NOMBRE_RDL => PUNTERO_FUNCION_METODOS }
 */

#include "hdoRDL.h"

/***
 * Definicion de la clase con atributos y metodos
 */

CREATE_CLASS( "THDORDL", THDORDL, THDORDL_IVARCOUNT )
{
    /* Metodos */
    METHOD( "NEW",              THDORDL_NEW )
    METHOD( "REGISTER",         THDORDL_REGISTER )
    METHOD( "LIST",             THDORDL_LIST )
    METHOD( "ISREGISTERED",     THDORDL_ISREGISTERED )
    METHOD( "GETPOS",           THDORDL_GETPOS )
    METHOD( "GETNAME",          THDORDL_GETNAME )
    METHOD( "GETPFUNCBYNAME",   THDORDL_GETPFUNCBYNAME )
}
END_CLASS

/***
 * Metodo: NEW
 * Uso: Constructor de la clase
 * Parametros: Ninguno
 * Devuelve: Self, un objeto inicializado
 */

HB_METHOD( THDORDL_NEW )
{
    PHB_ITEM pSelf = hb_pSelf();

    PHB_ITEM pd = hb_hashNew( NULL );
    PHB_ITEM pKey = hb_itemNew( NULL );
    PHB_ITEM pValue = hb_itemNew( NULL );

    hb_hashClearFlags( pd, HB_HASH_BINARY );
    hb_hashSetFlags( pd, HB_HASH_IGNORECASE | HB_HASH_RESORT );

    hdo_listRDL( pd, pKey, pValue );

    hb_itemRelease( pKey );
    hb_itemRelease( pValue );

    hb_arraySetForward( pSelf, IVAR_HASHRDL, pd );

    hb_itemRelease( pd );

    /* Devuelve SELF */
    hb_itemReturnRelease( pSelf );
}

/***
 * Metodo: LIST
 * Uso: Consulta de RDL registrados
 * Parametros: Ninguno
 * Devuelve: Array con los RDLs registrados
 */

HB_METHOD( THDORDL_LIST )
{
    PHB_ITEM pd = hb_getHRDL();

    if( pd )
    {
        hb_itemReturnRelease( hb_hashGetKeys( pd ) );
    }
    else
    {
        hb_ret();
    }
}

/***
 * Metodo: REGISTER
 * Uso: Registra un RDL si no existe
 * Parametros: El nombre del RDL y un puntero a la funcion del RDL
 * Devuelve: Nada
 */

HB_METHOD( THDORDL_REGISTER )
{
    PHB_ITEM pd = hb_getHRDL();

    if( pd )
    {
        PHB_ITEM pKey = hb_param( 1, HB_IT_STRING );
        PHB_ITEM pValue = hb_param( 2, HB_IT_POINTER );

        if( pKey )
        {
            hb_hashAdd( pd, pKey, pValue );
        }
    }
}

/***
 * Metodo: ISREGISTERED
 * Uso: Comprueba si un RDL esta registrado
 * Parametros: Nombre del RDL
 * Devuelve: Valor logico indicando si existe o no
 */

HB_METHOD( THDORDL_ISREGISTERED )
{
    PHB_ITEM pd = hb_getHRDL();
    HB_BOOL bRet = HB_FALSE;

    if( pd )
    {
        PHB_ITEM pKey = hb_param( 1, HB_IT_STRING );

        if( pKey )
        {
            bRet = ( hb_hashGetCItemPos( pd, pKey ) != 0 );
        }
    }

    hb_retl( bRet );
}

/***
 * Metodo: GETPOS
 * Uso: Comprueba la posicion que ocupa un RDL
 * Parametros: Nombre del RDL
 * Devuelve: La posicion o 0 encaso de no estar registrado
 */

HB_METHOD( THDORDL_GETPOS )
{
    PHB_ITEM pd = hb_getHRDL();
    HB_SIZE nRet = 0;

    if( pd )
    {
        PHB_ITEM pKey = hb_param( 1, HB_IT_STRING );

        if( pKey )
        {
            nRet = hb_hashGetCItemPos( pd, pKey );

        }
    }

    hb_retni( nRet );
}

/***
 * Metodo: GETNAME
 * Uso: Consultar el nombre de un RDL por la posicion que ocupa
 * Parametros: Entero positivo
 * Devuelve: El nombre del RDL si esta registrado o NULL si no lo esta
 */

HB_METHOD( THDORDL_GETNAME )
{
    PHB_ITEM pd = hb_getHRDL();
    PHB_ITEM pRet = NULL;

    if( pd )
    {
        HB_USHORT nPos = hb_parni( 1 );

        if( nPos >= 1 )          /* Controlar el LEN del array */
        {
            pRet = hb_hashGetKeyAt( pd, nPos );
        }
    }

    hb_itemReturnRelease( pRet );
}

/***
 * Metodo: GETPFUNCBYNAME
 * Uso: Comprueba la posicion que ocupa un RDL
 * Parametros: Nombre del RDL
 * Devuelve: La posicion o 0 encaso de no estar registrado
 */

HB_METHOD( THDORDL_GETPFUNCBYNAME )
{
    PHB_ITEM pd = hb_getHRDL();
    PHB_ITEM pValue = NULL;

    if( pd )
    {
        PHB_ITEM pKey = hb_param( 1, HB_IT_STRING );

        if( pKey )
        {
            pValue = hb_hashGetItemPtr( pd, pKey, HB_HASH_AUTOADD_ACCESS );
        }
    }

    hb_itemReturn( pValue );
}


 

Re: HDO. Fuente de la clase que gestiona las RDL...

Posted: Fri Dec 02, 2016 9:01 am
by Ariel
Hola Manuel,
pregunta, los fuentes de la clase (sean .c o .prg o .loquesea), estaran disponibles para todos como la TDolphin?, en caso de que no, la clase tiene algun costo?, en caso de que no tenga costo... pues porque no liberas los fuentes?
Gracias.
Saludos.

Re: HDO. Fuente de la clase que gestiona las RDL...

Posted: Wed Dec 14, 2016 11:20 pm
by xmanuel
:D

Re: HDO. Fuente de la clase que gestiona las RDL...

Posted: Thu Dec 15, 2016 10:35 am
by Ariel
???

Re: HDO. Fuente de la clase que gestiona las RDL...

Posted: Thu Dec 15, 2016 4:11 pm
by Compuin
Hay algun sentido en pagar o tener una clase cerrada si FWH ya da soporte a MySQL, MariaDB y MSSQL ? Incluso con xHarbour puyedes conectar a otros motores como PostgreSQL ?

Re: HDO. Fuente de la clase que gestiona las RDL...

Posted: Fri Dec 16, 2016 8:23 am
by hmpaquito
Compuin wrote:Hay algun sentido en pagar o tener una clase cerrada si FWH ya da soporte a MySQL, MariaDB y MSSQL ? Incluso con xHarbour puyedes conectar a otros motores como PostgreSQL ?
Si mucho, si lo que te ofrecen es un controlador multi base de datos y además con una tremenda velocidad.

Re: HDO. Fuente de la clase que gestiona las RDL...

Posted: Fri Dec 16, 2016 1:09 pm
by Compuin
Si el soporte va a ser como Eagle1, no gracias

Re: HDO. Fuente de la clase que gestiona las RDL...

Posted: Fri Dec 16, 2016 10:05 pm
by xmanuel
Alguien ha tenido algún problema con Eagle1?
He contestado a todo el mundo, he implementado todo lo que me han ido pidiendo... eso ha hecho grande a E1.
Incluso me he puesto a hacer partes de los proyectos de los usuarios. :shock: :shock:
El mantenimiento ha sido continuado (no por 6 meses o un año sino para siempre) por el foro de E1, por email particulares y por llamadas de telefono a la gente de España.
Hay usurios de E1 por todo el mundo y a mi nadie se me ha quejado...
Hay aplicaciones hechas con FWH y E1 funcionando a tope por todo el mundo en bufetes de abogados, cadenas de gasolineras, tiendas de neumaticos, talleres, contabilidades, facturaciones etc etc...
Así que no sé qué quieres decir :(

He hecho campañas de venta de E1 que consistían en que me mandaran una copia de un donativo a alguna institución de niños huerfanos o con algún problema.
He regalado E1 a la gente que me ha dicho que no lo podía pagar...

Sé que E1 ha servido de modelo a otros proyectos...

Por otro lado, en este foro creo he ayudado a los compañeros que lo han necesitado todo lo que he podido y la gente que me conoce lo sabe.

Cuando me enfrasco en un proyecto lo hago con mucho esfuerzo para que sea util a todo el que lo usa y tengan buenas exeriencias.

Re: HDO. Fuente de la clase que gestiona las RDL...

Posted: Fri Dec 16, 2016 10:27 pm
by Compuin
Lo que quise decir, y me disculpo porque me hice mal interpretar, es que el soporte con E1 en mi caso no fue satisfactorio. Reconozco que el costo es irrisorio, pero el tema del soporte es lo que me inquieta

Re: HDO. Fuente de la clase que gestiona las RDL...

Posted: Sat Dec 17, 2016 9:57 am
by xmanuel
Pues tendré que cambiar esos fallos y mejorar... a ver que nos innovamos.
Gracias por tu aportación. :oops: :D

Re: HDO. Fuente de la clase que gestiona las RDL...

Posted: Sat Dec 17, 2016 11:54 am
by russimicro
Buen día...

Uso E1, por mas de 10 años, sincronizo 35 puntos de ventas (DBF ->MYSQL ..... MYSQL -> DBF), en segundos tengo actualizados todos mis puntos locales-DBF, nunca me he quedado varado. Si un producto es bueno y te genera ingresos,,,, por que no pagar.

Saludos

JOHNSON RUSSI
Colombia

Re: HDO. Fuente de la clase que gestiona las RDL...

Posted: Sat Dec 17, 2016 12:27 pm
by csincuir
Hola,
Yo he usado E1 por mas de 12 años ya, y con la ayuda y soporte que recibi de Manu al inicio, y su trabajo con E1, me sirvio de mucho para cambiar mi sistema que usaba DBF's a MySQL y adentrarme al mundo del SQL.
Hasta el dia de hoy no he necesitado de otra herramienta o clase, para acceder a MySQL o MariaDB desde FWH, E1 hace todo lo que necesito.

Saludos desde Guatemala.

Carlos.

Re: HDO. Fuente de la clase que gestiona las RDL...

Posted: Sun Dec 18, 2016 12:29 am
by Compuin
Como lo dije para los amigos que no leyeron bien, el tema no es costo, el tema es soporte.

Re: HDO. Fuente de la clase que gestiona las RDL...

Posted: Sun Dec 18, 2016 2:20 pm
by russimicro
Uso E1, por mas de 10 años, y solo lo he llamado para consignarle el valor de las actualizaciones, nunca he requerido soporte para el funcionamiento

Re: HDO. Fuente de la clase que gestiona las RDL...

Posted: Tue Dec 20, 2016 9:29 am
by lucasdebeltran
Pero sigue sin responder a lo fundamental: si los fuentes vienen incluidos o no, y qué precio tienen...