umm, en mi caso particular yo cuando guardo la imagen en tabla lo que hago es lo siguiente:
- define el campo en la tabla de mysql/mariadb es de tipo MEDIUMTEXT.
- para guardar el archivo en la tabla, lo hago de la siguiente forma: oQry:ARCHIVO:= hb_StrToHex( FileStr( "c:\test\test.jpg" ) )
- y para recuperarlo lo hago de la siguiente forma: MsgRun( "Guardando documento a archivo...", "Espere por favor", {|| nSize := StrFile( HB_HexToStr( oQryTmp:ARCHIVO ), cFileExtract ) } )
en tu caso podrias usarlo ::oImagen:LoadFromString( HB_HexToStr( oQryTmp:ARCHIVO ) )
En mi caso convierto la cadena regresada por StrFile y lo paso a hexadecimal lo cual duplica en tabla en tamaño del archivo a guardar, si el archivo es de 10k, ya en tabla son 20k,
en algunas ocasiones experimente en en convertir a base64 y ahi el incremento es del 50% por lo que 10k pasa a ser como 15k, pero note como que tomaba mas tiempo. (en este caso uso las funciones HB_Base64Encode y HB_Base64DecodeE en lugar de hb_StrToHex yHB_HexToStr)
En tu caso el mensaje de errror es que el objeto ::oImagen no esta creado, esa variable tiene un valor de NIL y por lo tanto no tiene definido ningún método, ten en cuenta que ese comando de definición se debe crear tal como esta definido en el ch, tambien se da la particularidad que ese comando en fivewin esta definido en dos lugares.... ???? Antonio hay que ver si esto es necesario o eliminar uno de ellos.
image.ch
Code: Select all
#xcommand REDEFINE Image [ <oBmp> ] ;
[ ID <nId> ] ;
[ <of: OF, WINDOW, DIALOG> <oWnd> ] ;
[ <resource: NAME, RESNAME, RESOURCE> <cResName> ] ;
[ <file: FILE, FILENAME, DISK> <cBmpFile> ] ;
[ <lClick: ON ClICK, ON LEFT CLICK> <uLClick> ] ;
[ <rClick: ON RIGHT CLICK> <uRClick> ] ;
[ <scroll: SCROLL> ] ;
[ <adjust: ADJUST> ] ;
[ CURSOR <oCursor> ] ;
[ MESSAGE <cMsg> ] ;
[ <update: UPDATE> ] ;
[ WHEN <uWhen> ] ;
[ VALID <uValid> ] ;
=> ;
[ <oBmp> := ] TImage():ReDefine( <nId>, <cResName>, <cBmpFile>,;
<oWnd>, [\{ |nRow,nCol,nKeyFlags| <uLClick> \}],;
[\{ |nRow,nCol,nKeyFlags| <uRClick> \}],;
<.scroll.>, <.adjust.>, <oCursor>, <cMsg>, <.update.>,;
<{uWhen}>, <{uValid}> )
fivewin.ch
Code: Select all
#xcommand REDEFINE IMAGE [ <oBmp> ] ;
[ ID <nId> ] ;
[ <of: OF, WINDOW, DIALOG> <oWnd> ] ;
[ <resource: NAME, RESNAME, RESOURCE> <cResName> ] ;
[ <file: FILE, FILENAME, DISK> <cBmpFile> ] ;
[ <lClick: ON ClICK, ON LEFT CLICK> <uLClick> ] ;
[ <rClick: ON RIGHT CLICK> <uRClick> ] ;
[ <scroll: SCROLL> ] ;
[ <adjust: ADJUST> ] ;
[ CURSOR <oCursor> ] ;
[ MESSAGE <cMsg> ] ;
[ <update: UPDATE> ] ;
[ WHEN <uWhen> ] ;
[ VALID <uValid> ] ;
[ <transparent: TRANSPARENT> ] ;
=> ;
[ <oBmp> := ] TImage():ReDefine( <nId>, <cResName>, <cBmpFile>,;
<oWnd>, [\{ |nRow,nCol,nKeyFlags| <uLClick> \}],;
[\{ |nRow,nCol,nKeyFlags| <uRClick> \}],;
<.scroll.>, <.adjust.>, <oCursor>, <cMsg>, <.update.>,;
<{uWhen}>, <{uValid}>, <.transparent.> )