FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Grabar un objeto
Posts: 59
Joined: Tue Jan 31, 2006 01:32 PM
Grabar un objeto
Posted: Tue Jul 04, 2017 04:34 PM

Es posible grabar un objeto y sus propiedades en un archivo o en una campo de tabla sql server o cualquier otra ?, por ejemplo hago un grafico estadistico con chart de owc, el operador lo modifica visualmente y quiero que los cambios queden grabados para recuperarlos en otro momento y mostrar nuevamente el grafico con las modificaciones s
realizadas.
Les agradecería si alguien puede orientarme al respecto.

Saludos

Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Re: Grabar un objeto
Posted: Tue Jul 04, 2017 04:41 PM

Hoa,

Repasa la clase fwdbg.prg -> function Object2Data( o )

Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
HIX -> https://github.com/carles9000/hix
Posts: 59
Joined: Tue Jan 31, 2006 01:32 PM
Re: Grabar un objeto
Posted: Tue Jul 04, 2017 05:02 PM

Carles, gracias por la información, veo que hay opciones, el problema es que en mi version de fivewin no tengo ese codigo, es posible publicarlo aqui ?

Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Re: Grabar un objeto
Posted: Tue Jul 04, 2017 05:07 PM

Hola,

Si se lo pides al Sr. Linares seguro que te la envia...

Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
HIX -> https://github.com/carles9000/hix
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Grabar un objeto
Posted: Thu Jul 06, 2017 09:25 AM
Desarrollado por nuestro querido Carles, menuda barba te has dejado! :-)

Code (fw): Select all Collapse
FUNCTION Object2Data( oObject )
*-------------------------------------
    LOCAL aDict := {}
    LOCAL aIVar := {}
    LOCAL bError, oError
    LOCAL cx
    LOCAL uData
    LOCAL nLen

    IF ValType( oObject ) <> 'O'
       RETU aIVar
    ENDIF

    nLen   := Len( aDict := ASort( __ClassSel( oObject:ClassH )))
    bError := ErrorBlock( {|oError| ErrorObject( oError )} )

    BEGIN SEQUENCE

        FOR cx = 1 TO nLen

          IF !( StrChar( aDict[cx], 1) == '_')  // !Method

             IF Ascan( aDict, Left( "_" + aDict[cx], 10 ) ) == 0

*                 AADD( aMeth, aDict[cx] + '()'  )

               ELSE  // Var

                uData := OSend( oObject, aDict[cx] )

                Aadd( aIvar, { aDict[cx], ValType( uData ), uData, oObject } )

             ENDIF
     
          ENDIF

        NEXT

      RECOVER USING oError

           Eval( bError, oError )

    END SEQUENCE

    ErrorBlock( bError )

    IF Len( aIvar ) == 0
       Aadd( aIvar, { "No DATA", "", "" } )
    ENDIF

RETU aIVar
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Grabar un objeto
Posted: Thu Jul 06, 2017 11:33 AM
Harbour, ese gran desconocido, tiene dos funciones a tal fin:

hb_Serialize() y hb_Deserialize()

Code (fw): Select all Collapse
   HB_SERIALIZE( <xData>, [ <lNumSizes> = .F. ], ; 
                 [ <cCdpIn> = HVMCP ], [ <cCdpOut> = HVMCP ] ) -> cData 
   HB_DESERIALIZE( <cData>, ; 
                   [ <cCdpIn> = HVMCP ], [ <cCdpOut> = HVMCP ] ) -> xData

Continue the discussion