Page 1 of 1
Grabar un objeto
Posted: Tue Jul 04, 2017 4:34 pm
by infosys
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
Re: Grabar un objeto
Posted: Tue Jul 04, 2017 4:41 pm
by Carles
Hoa,
Repasa la clase fwdbg.prg -> function Object2Data( o )
Re: Grabar un objeto
Posted: Tue Jul 04, 2017 5:02 pm
by infosys
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 ?
Re: Grabar un objeto
Posted: Tue Jul 04, 2017 5:07 pm
by Carles
Hola,
Si se lo pides al Sr. Linares seguro que te la envia...
Re: Grabar un objeto
Posted: Thu Jul 06, 2017 9:25 am
by Antonio Linares
Desarrollado por nuestro querido Carles, menuda barba te has dejado!
Code: Select all | Expand
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
Re: Grabar un objeto
Posted: Thu Jul 06, 2017 11:33 am
by hmpaquito
Harbour, ese gran desconocido, tiene dos funciones a tal fin:
hb_Serialize() y hb_Deserialize()
Code: Select all | Expand
HB_SERIALIZE( <xData>, [ <lNumSizes> = .F. ], ;
[ <cCdpIn> = HVMCP ], [ <cCdpOut> = HVMCP ] ) -> cData
HB_DESERIALIZE( <cData>, ;
[ <cCdpIn> = HVMCP ], [ <cCdpOut> = HVMCP ] ) -> xData