Page 1 of 1

EXTENDED class

PostPosted: Mon Sep 05, 2016 3:05 pm
by goosfancito
Buenas.

Ya vi varios item en el foro, pero no me funciona.

tengo que extender la clase tdolphin para hacer una modificacion que me dijo Carlos la cual me parecio muy buena,
en mi
Code: Select all  Expand view
function main()
   EXTEND CLASS TDOLPHINQRY WITH METHOD insert_2
   ...
   return(nil)


y luego en un archivo aparte (que incluyo al compilar)
pongo mi definicion de la funcion

Code: Select all  Expand view
FUNCTION insert_2( cTabla, aFV, nOperacion )


pero al momento de llamarlo desde otro archivo que es una deficion de una clase
me tira el siguiente error:
Error description: Error BASE/1004 Class: 'NIL' has no exported method: INSERT_2
Args:
[ 1] = U
[ 2] = C tbpc
[ 3] = A { ... }
[ 4] = N 0


que estoy haciendo mal?

gracias.

Re: EXTENDED class

PostPosted: Mon Sep 05, 2016 3:22 pm
by karinha
Code: Select all  Expand view

// The example adds a method to the "root" class of xHarbour: HBObject().
// All new classes inherit from this class. This is used in the example
// for tracing variables depending on their data types in different log
// files.

 #include "HbClass.ch"

 PROCEDURE Main
   LOCAL obj, nValue := 2, dDate := Date()

   EXTEND CLASS HBObject WITH MESSAGE log METHOD LogData

   ENABLE TYPE CLASS ALL

   obj := Test():new( "xHarbour" )

   obj:log( "Objects.log" )

   nValue:log( "Numerics.log" )

   dDate:log( "Dates.log" )
 RETURN

 CLASS Test
   EXPORTED:
   DATA value
   METHOD init(x) INLINE (::value := x, self)
 ENDCLASS

 STATIC FUNCTION LogData( cLogFile )
   LOCAL self := HB_QSelf()
   LOCAL cOldFile

   IF .NOT. Set( _SET_TRACE )
    RETURN self
   ENDIF

   IF Valtype( cLogFile ) == "C"
    cOldFile := Set( _SET_TRACEFILE, cLogFile )
   ENDIF

   Tracelog( self )

   IF cOldFile <> NIL
    Set( _SET_TRACEFILE, cOldFile )
   ENDIF
 RETURN self
 



Re: EXTENDED class

PostPosted: Mon Sep 05, 2016 3:35 pm
by goosfancito
algo estoy haciendo mal.

el codigo que utilizo esta estructurado cmo pones vos, pero a mi no me lo llama al metodo.

voy a probar tu ejemplo.

gracias.

Re: EXTENDED class (SOLUCIONADO)

PostPosted: Mon Sep 05, 2016 9:47 pm
by goosfancito
Gracias!

Lo que estaba haciendo gracias a Carlos que me guio desde el principio me funcionó ,
lo que estaba mal era que yo ponia TDOLPHINQRY y debia ser TDOLPHINSRV gracias
a ambos!

Solucionado.