Page 1 of 5

TDbf PRO disponible...

Posted: Fri Aug 29, 2014 3:12 pm
by xmanuel
TDbf PRO disponible en fase beta.

Las caracteristicas principales es que está hecha al 100% en C
El buffer es ahora una tabla hash (Array asociativo)
Y como siempre se podrá usar con FWH de 32 y 64!!!

Muy proto más información en https://es.groups.yahoo.com/neo/groups/tdbfpro/info :wink:

Re: TDbf PRO disponible...

Posted: Fri Aug 29, 2014 3:23 pm
by xmanuel
Por cierto, ahora es el momento que pidais cosas!!!!

Re: TDbf PRO disponible...

Posted: Fri Aug 29, 2014 4:23 pm
by Carles
Gracias !!!

Puedes explicar q hace ? :D (controlar dbfs...)

Re: TDbf PRO disponible...

Posted: Sat Aug 30, 2014 9:39 am
by xmanuel
Sí, controla DBF. Lo novedoso es como esta hecha la clase, 100% en lenguaje C. Eso hace que sea mucho más rápida.
Puedes manejar una DBF como un objeto.ç
Tienes un buffer que hace innecesario el uso de variables intermadias.
Bueno tiene más caracteristicas que iré desgranando.

En el foro de TDBF_PRO he puesto un ejemplo: https://es.groups.yahoo.com/neo/groups/ ... Dbf%20PRO/
Usa test.dbf de samples que viene con harbour, pero si no esta en el directorio la crea automaticamente pero vacía...

Saludos

Re: TDbf PRO disponible...

Posted: Sun Aug 31, 2014 12:10 am
by ruben Dario
No hay nada, porque no lo colocas en este fórum

Re: TDbf PRO disponible...

Posted: Mon Sep 01, 2014 10:48 pm
by xmanuel
Te garantizo que sí hay!!!

https://es.groups.yahoo.com/neo/groups/ ... RO%20DEMO/

Lo pondré aquí si Antonio lo permite ;-)

Re: TDbf PRO disponible...

Posted: Tue Sep 02, 2014 12:51 am
by cuatecatl82
Nop no hay nada, hay que darse de alta o ser usuario de Yahoo para ver la pagina.. Mejor subelo a otro servidor gratuito..

Saludos..

Re: TDbf PRO disponible...

Posted: Tue Sep 02, 2014 2:23 am
by ruben Dario
Soy Usuario de Yahoo , pero no muestra anda

Re: TDbf PRO disponible...

Posted: Tue Sep 02, 2014 10:06 am
by acuellar
Manuel

Ya cree un usuario Yahoo.es y no muestra nada.

Saludos,

Adhemar

Re: TDbf PRO disponible...

Posted: Tue Sep 02, 2014 10:41 am
by xmanuel
Haz una petición de entrada en mi grupo de TDbfPRO de Yahoo y te la apruebo...

Re: TDbf PRO disponible...

Posted: Tue Sep 02, 2014 1:17 pm
by elvira
xManuel,

La clase es gratuita o es de paga?.

Yo ahora mismo preferentemente uso ADO y estamos dejando las dbfs.

Re: TDbf PRO disponible...

Posted: Tue Sep 02, 2014 1:25 pm
by acuellar
Perfecto

Ya la bajé.

Gracias.

Saludos,

Adhemar

Re: TDbf PRO disponible...

Posted: Tue Sep 02, 2014 2:11 pm
by ruben Dario
Ya la baje , solamente esta el ejecutable mas no la clase , dicha clase es gratuita o de paga.

EN realidad emigre todos los DBF a otro motor de base de datos que es gratuito como MARIAB

Gracias

Re: TDbf PRO disponible...

Posted: Wed Sep 03, 2014 8:24 am
by xmanuel
Es eso, un ejemplo. Viene el fuente del mismo con la propuesta de tipo de programación que yo haría y el ejecutable.
La definicion en lenguaje C usando el preprocesador es la que pongo más abajo. Me gustaría que si veis un método que pueda faltar que me lo diga :D

Code: Select all

CREATE_CLASS( "TCDBF", TCDBF, TCDBF_IVARCOUNT )

// Datas:
    VAR( "BUFFER", TCDBF_BUFFER, TCDBF_VNULL ); // Solo lectura

// Metodos de área de trabajo / gestión de base de datos:
    METHOD( "NEW", TCDBF_INIT );
    METHOD( "CREATE", DBCREATE );
    METHOD( "SELECT", TCDBF_SELECT );
    METHOD( "OPEN", TCDBF_OPEN );
    METHOD( "CLOSE", TCDBF_CLOSE );
    METHOD( "EVAL", TCDBF_EVAL );
    METHOD( "INFO", TCDBF_INFO );
    METHOD( "PACK", TCDBF_PACK );
    METHOD( "SYSNAME", TCDBF_SYSNAME );
    METHOD( "ZAP", TCDBF_ZAP );
    METHOD( "USED", TCDBF_USED );
    METHOD( "ISOPEN", TCDBF_USED );
    METHOD( "FREE", TCDBF_FREE );

    METHOD( "ALIAS", TCDBF_ALIAS );
    METHOD( "GETAREA", TCDBF_GETAREA );

// MEtodos de bloqueos en red
    METHOD( "RECLOCK", TCDBF_RECLOCK );
    METHOD( "FLOCK", TCDBF_FLOCK );
    METHOD( "UNLOCK", TCDBF_UNLOCK );

// Metodos no Area de trabajo
    METHOD( "DROP", HB_DBDROP );
    METHOD( "EXISTS", HB_DBEXISTS );
    METHOD( "RENAME", HB_DBRENAME );

// Metodos de moviemiento y posicion:
    METHOD( "EOF", TCDBF_EOF );
    METHOD( "BOF", TCDBF_BOF );
    METHOD( "GOTOP", TCDBF_GOTOP );
    METHOD( "GOBOTTOM", TCDBF_GOBOTTOM );
    METHOD( "SKIP", TCDBF_SKIP );
    METHOD( "FOUND", TCDBF_FOUND );
    METHOD( "GOTO", TCDBF_GOTO );
    METHOD( "SEEK", TCDBF_SEEK );

// Metodos de gestion de datos:
    METHOD( "APPEND", TCDBF_APPEND );
    METHOD( "DELETE", TCDBF_DELETE );
    METHOD( "DELETED", TCDBF_DELETED );
    METHOD( "ISSELECTED", TCDBF_ISSELECTED );
    METHOD( "FIELDCOUNT", TCDBF_FIELDCOUNT );
    METHOD( "FIELDGET", TCDBF_FIELDGET );
    METHOD( "FIELDPUT", TCDBF_FIELDPUT );
    METHOD( "FIELDLEN", TCDBF_FIELDLEN );
    METHOD( "FIELDINFO", TCDBF_FIELDINFO );
    METHOD( "FIELDNAME", TCDBF_FIELDNAME );
    METHOD( "RECNO", TCDBF_RECNO );
    METHOD( "RECCOUNT", TCDBF_RECCOUNT );
    METHOD( "COMMIT", TCDBF_COMMIT );
    METHOD( "RECALL", TCDBF_RECALL );
    METHOD( "RECINFO", TCDBF_RECINFO );

// Métodos de gestion de relaciones
    METHOD( "SETRELATION", TCDBF_SETRELATION );
    METHOD( "CLEARRELATION", TCDBF_CLEARRELATION );
    METHOD( "RELAREA", TCDBF_RELAREA );
    METHOD( "RELTEXT", TCDBF_RELTEXT );

// Métodos de gestión de ordenaciones
    METHOD( "ORDCREATE", TCDBF_ORDCREATE );
    METHOD( "ORDLISTREBUILD", TCDBF_ORDLISTREBUILD );
    METHOD( "ORDLISTADD", TCDBF_ORDLISTADD );
    METHOD( "ORDLISTCLEAR", TCDBF_ORDLISTCLEAR );
    METHOD( "ORDSETFOCUS", TCDBF_ORDSETFOCUS );

// Basadas en ORDINFO:
    METHOD( "ORDINFO", TCDBF_ORDINFO ); // Utilizar para todo lo que se pueda
    METHOD( "ORDKEYCOUNT", TCDBF_ORDKEYCOUNT );
    METHOD( "ORDFULLPATH", TCDBF_FULLPATH );
    METHOD( "ORDKEY", TCDBF_ORDKEY );
    METHOD( "ORDNAME", TCDBF_ORDNAME );
    METHOD( "ORDBAGNAME", TCDBF_ORDBAGNAME );
    METHOD( "ORDBAGEXT", TCDBF_ORDBAGEXT );
    METHOD( "ORDCOND", TCDBF_ORDCOND );
    METHOD( "ORDNUMBER", TCDBF_ORDNUMBER );
    METHOD( "ORDCOUNT", TCDBF_ORDCOUNT );
    METHOD( "ORDKEYNO", TCDBF_ORDKEYNO );
    METHOD( "ORDKEYGOTO", TCDBF_ORDKEYGOTO );
    METHOD( "ORDKEYRELPOS", TCDBF_ORDKEYRELPOS );
    METHOD( "ORDFINDREC", TCDBF_ORDFINDREC );
    METHOD( "ORDKEYVAL", TCDBF_ORDKEYVAL );

// Metodos de gestion de filtros y scopes
    METHOD( "SETSCOPETOP", TCDBF_SETSCOPETOP );
    METHOD( "SETSCOPEBOTTOM", TCDBF_SETSCOPEBOTTOM );
    METHOD( "SETFILTER", TCDBF_SETFILTER );
    METHOD( "CLEARFILTER", TCDBF_CLEARFILTER );
    METHOD( "LOCATE", TCDBF_LOCATE );
    METHOD( "SETLOCATE", TCDBF_SETLOCATE );
    METHOD( "CONTINUE", TCDBF_CONTINUE );
    METHOD( "CLEARLOCATE", TCDBF_CLEARLOCATE );
    METHOD( "FILTERTEXT", TCDBF_FILTERTEXT );

//  Metodos de manejo de campos MEMO y BLOB
    METHOD( "GETVALUEFILE", TCDBF_GETVALUEFILE );
    METHOD( "PUTVALUEFILE", TCDBF_PUTVALUEFILE );

//------------------------------------------------------------------------------
// Metodos del buffer (hash table)
    METHOD( "LOAD", TCDBF_LOAD );
    METHOD( "SAVE", TCDBF_SAVE );
    METHOD( "UPDATE", TCDBF_UPDATE );
    METHOD( "INSERT", TCDBF_INSERT );
    METHOD( "REMOVE", TCDBF_REMOVE );
    METHOD( "BUFFERLEN", TCDBF_BUFFERLEN );
    METHOD( "BUFFERKEYAT", TCDBF_BUFFERKEYAT );
    METHOD( "BUFFERKEYS", TCDBF_BUFFERKEYS );
    METHOD( "GETBUFFER", TCDBF_GETBUFFER );
    METHOD( "GETBUFFERAT", TCDBF_GETBUFFERAT );
    METHOD( "SETBUFFER", TCDBF_SETBUFFER );
    METHOD( "SETBUFFERAT", TCDBF_SETBUFFERAT );
    METHOD( "ABUFFER", TCDBF_ABUFFER );
    METHOD( "BLANK", TCDBF_BLANK );
    METHOD( "SETBUFKEYCASEMATCH", TCDBF_SETBUFKEYCASEMATCH );

END_CLASS

 
Y como ejemplo de implementación te pongo el método constructor new() :

Code: Select all

//------------------------------------------------------------------------------
// Metodo: new()
// Uso: Constructor de la clase
// Devuelve: el objeto

HB_FUNC_STATIC( TCDBF_INIT )
{
    PHB_ITEM pSelf = hb_pSelf();

    if( pSelf )
    {
        TDBFP pTDbf = hb_xgrab( sizeof( TDBF ) );
        const char * szDFName = hb_parc( 1 );

        pTDbf->pArea = NULL;
        pTDbf->szDataFileName = NULL;
        pTDbf->pBuffer = NULL;

        if( szDFName )
        {
            pTDbf->szDataFileName = hb_strdup( szDFName );
        }

        // Asigna la estructura recien creada a la clase
        hb_arraySetPtr( pSelf, TCDBF_DATA_STRUCT, pTDbf );
    }

    // Un constructor siempre devuelve SELF
    hb_itemReturn( pSelf );
}

 
Salu2

Re: TDbf PRO disponible...

Posted: Wed Sep 03, 2014 12:31 pm
by xmanuel
La base de como está construida TDbfPRO está en una conversación con Antonio en el foro.
Busca "Enviando un mensaje a un objeto desde bajo nivel"