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

xmanuel
Posts: 613
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla
Contact:

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

Post 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 );
}


 
______________________________________________________________________________
Sevilla - Andalucía
Ariel
Posts: 309
Joined: Wed Nov 29, 2006 1:51 pm
Location: Rosario - Argentina

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

Post 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.
xmanuel
Posts: 613
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla
Contact:

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

Post by xmanuel »

:D
______________________________________________________________________________
Sevilla - Andalucía
Ariel
Posts: 309
Joined: Wed Nov 29, 2006 1:51 pm
Location: Rosario - Argentina

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

Post by Ariel »

???
Compuin
Posts: 1017
Joined: Tue Dec 28, 2010 1:29 pm

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

Post 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 ?
hmpaquito
Posts: 1200
Joined: Thu Oct 30, 2008 2:37 pm

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

Post 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.
Compuin
Posts: 1017
Joined: Tue Dec 28, 2010 1:29 pm

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

Post by Compuin »

Si el soporte va a ser como Eagle1, no gracias
xmanuel
Posts: 613
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla
Contact:

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

Post 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.
______________________________________________________________________________
Sevilla - Andalucía
Compuin
Posts: 1017
Joined: Tue Dec 28, 2010 1:29 pm

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

Post 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
xmanuel
Posts: 613
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla
Contact:

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

Post by xmanuel »

Pues tendré que cambiar esos fallos y mejorar... a ver que nos innovamos.
Gracias por tu aportación. :oops: :D
______________________________________________________________________________
Sevilla - Andalucía
russimicro
Posts: 179
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

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

Post 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
csincuir
Posts: 305
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala
Contact:

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

Post 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.
Compuin
Posts: 1017
Joined: Tue Dec 28, 2010 1:29 pm

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

Post by Compuin »

Como lo dije para los amigos que no leyeron bien, el tema no es costo, el tema es soporte.
russimicro
Posts: 179
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

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

Post 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
User avatar
lucasdebeltran
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am
Contact:

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

Post by lucasdebeltran »

Pero sigue sin responder a lo fundamental: si los fuentes vienen incluidos o no, y qué precio tienen...
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
Post Reply