FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour dificil guardar Rtf en campo memo (dbf) o campo de Mysql??
Posts: 467
Joined: Fri Dec 09, 2005 12:41 AM
dificil guardar Rtf en campo memo (dbf) o campo de Mysql??
Posted: Sun Nov 30, 2008 04:19 PM
Buenos dias

Siguiendo los consejos de Antonio, le di una mirada a la control RichEdit y realmente tenias razon, es muy interasante y facil su implementacion reemplazandolo por un get Memo..

He podido ver como grabar el texto editado a un ARCHIVO xxx.Rtf y como leerlo, impresionantemente facil.

Ahora tengo dos consultas..

1. El punto ahora es como guardar este texto a un campo memo (en el caso de usar un dbf. ) y luego com recuperarlo para continuar su edicion.

2. Para los amigos que usan Mysql, la idea es guardarlo en una Tabla de Mysql, en un campo tipo Blog segun tengo entendido es el adecuado, como puedo guardarlo y luego recuperarlo para continuar su edicion???


Les agradesco las respuestasss..

Lubin


Antonio Linares wrote:Usa un control RichEdit.

Revisa FWH\samples\TestRich.prg y TestRtf.prg

Podrás hacer todo eso, y más :-)
Posts: 337
Joined: Fri Oct 07, 2005 02:44 PM
dificil guardar Rtf en campo memo (dbf) o campo de Mysql??
Posted: Mon Dec 01, 2008 02:32 PM

Lubin,

Para mi la forma mas facil fue convertir el rtf con mime64 y guardarlo en un campo mediumtext, luego lo lees y vuelves a transformas al formato original y listo.

Atte.,

Lautaro Moreira

Hola,

Soy un Contador que por necesidad aprendio a programar y se quedo programando.
Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
dificil guardar Rtf en campo memo (dbf) o campo de Mysql??
Posted: Mon Dec 01, 2008 03:18 PM

En MySQL con Eagle1 lo hago asi:
Salu2

para almacenar
...
..
.
If MsgNoyes("Almacenar la Imagen Seleccionada?","Confirme")
ClearImage(oImagen)
oImagen:LoadBmp(cImagen)
oImagen:Refresh()

oUpdate := TMSQuery():New( oMySQL )
cChr := oUpdate:ReadFromFile(cImagen)

cUpdate := "SELECT registro FROM imagenes WHERE cod_producto = '" + cCodigo + "'"
oUpdate := TMSQuery():New( oMySQL )
oUpdate:Open( cUpdate )

If oUpdate:Reccount() = 0
cUpdate := "INSERT INTO imagenes (cod_producto, imagen) VALUES ('" + cCodigo + "', '" + cChr + "')"
Else
cRegistro := ALLTRIM(STR(oUpdate:FieldGet(1),15,0))
cUpdate := "UPDATE imagenes SET imagen = '" + cChr + "' WHERE registro = " + cRegistro
EndIf
oUpdate:Close()

lOk := SQLExec(oDatabase, cUpdate )
EndIf
...
para recuperar
...
..
.

cBusca := "SELECT registro, imagen FROM imagenes WHERE cod_producto = '" + cCodigo + "'"
oBusca := TMSQuery():New( oMySQL )
oBusca:Open( cBusca )

If oBusca:Reccount() = 0
ClearImage(oImagen)
oImagen:SETBMP("NOIMAGEN")
oBusca:Close()
Return(oImagen)
EndIf

cFile := "img000.000"
oBusca:WriteToFile( 2, cFile )
oBusca:Close()

ClearImage(oImagen)
oImagen:LoadBmp(cFile)
FERASE(cFile)
Return(oImagen)

.

Posts: 467
Joined: Fri Dec 09, 2005 12:41 AM
dificil guardar Rtf en campo memo (dbf) o campo de Mysql??
Posted: Mon Dec 01, 2008 04:10 PM
Hola Lautaro:

Ahora... la pregunta que me surge es... y como convierto el formato rtf a un formato mime64, existe alguna funcion o algun ejemplo ??

teniendo presente q estoy haciendo la edicion usando la control RichEdit como saco el valor editado de esa clase... lo paso al convertidor y luego grabarlo..

Gracias por tu respuesta ...


Lautaro wrote:Lubin,

Para mi la forma mas facil fue convertir el rtf con mime64 y guardarlo en un campo mediumtext, luego lo lees y vuelves a transformas al formato original y listo.


Atte.,

Lautaro Moreira
Posts: 467
Joined: Fri Dec 09, 2005 12:41 AM
dificil guardar Rtf en campo memo (dbf) o campo de Mysql??
Posted: Mon Dec 01, 2008 04:19 PM
Willi , gracias por la respuesta

Unas connsultas si no es molestia ...
1. En este caso estariamos tomando el archivo Rtf como si fuese una imagen ?? y ejecuto el procesoo que me indicass ??

2. Por casualidad sabes como jalarias el valor digitado del la clase control RichEdit para pasarlo directamente a la variable del Eagle1 sin tener q grabar el archivo xxx.rtf??

3. en este ejemplo las funciones ClearImage() es del fivewin ??


Gracias Willi
Lubin



Willi Quintana wrote:En MySQL con Eagle1 lo hago asi:
Salu2

para almacenar
...
..
.
If MsgNoyes("Almacenar la Imagen Seleccionada?","Confirme")
ClearImage(oImagen)
oImagen:LoadBmp(cImagen)
oImagen:Refresh()

oUpdate := TMSQuery():New( oMySQL )
cChr := oUpdate:ReadFromFile(cImagen)

cUpdate := "SELECT registro FROM imagenes WHERE cod_producto = '" + cCodigo + "'"
oUpdate := TMSQuery():New( oMySQL )
oUpdate:Open( cUpdate )

If oUpdate:Reccount() = 0
cUpdate := "INSERT INTO imagenes (cod_producto, imagen) VALUES ('" + cCodigo + "', '" + cChr + "')"
Else
cRegistro := ALLTRIM(STR(oUpdate:FieldGet(1),15,0))
cUpdate := "UPDATE imagenes SET imagen = '" + cChr + "' WHERE registro = " + cRegistro
EndIf
oUpdate:Close()

lOk := SQLExec(oDatabase, cUpdate )
EndIf
...
para recuperar
...
..
.

cBusca := "SELECT registro, imagen FROM imagenes WHERE cod_producto = '" + cCodigo + "'"
oBusca := TMSQuery():New( oMySQL )
oBusca:Open( cBusca )

If oBusca:Reccount() = 0
ClearImage(oImagen)
oImagen:SETBMP("NOIMAGEN")
oBusca:Close()
Return(oImagen)
EndIf

cFile := "img000.000"
oBusca:WriteToFile( 2, cFile )
oBusca:Close()

ClearImage(oImagen)
oImagen:LoadBmp(cFile)
FERASE(cFile)
Return(oImagen)

.
Posts: 337
Joined: Fri Oct 07, 2005 02:44 PM
dificil guardar Rtf en campo memo (dbf) o campo de Mysql??
Posted: Mon Dec 01, 2008 06:43 PM

Lubin,

Para codificar :

fmimeenc([archivo in],[archivo out])
xvar:=memoread([archivo out])

despues

:query("update .... set xcampo='"+xvar+"'")
:update()

Para descodificar

xvar:= :xcampo
memowrite([carchivo temp],xvar)
fmimedec([carchivo temp],[carchivo final])

y listo, luego solo faltar procesar el [archivo final] como estimes conveniente.

Atte.,

Lautaro Moreira

atte.,

Lautaro Moreira

Hola,

Soy un Contador que por necesidad aprendio a programar y se quedo programando.
Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
dificil guardar Rtf en campo memo (dbf) o campo de Mysql??
Posted: Mon Dec 01, 2008 08:24 PM

Lubin, Lautaro tiene razon, "levanta" el archivo .rtf en una variable con el Memoread()... y zas.... el ejemplo que puse serviria...

Salu2

Posts: 467
Joined: Fri Dec 09, 2005 12:41 AM
dificil guardar Rtf en campo memo (dbf) o campo de Mysql??
Posted: Mon Dec 01, 2008 09:02 PM

Lautaro

La funcion fmimeenc([archivo in],[archivo out]) es de Harbour?? no la conocia..

Muchas Gracias, procedo a aplicarlo y te comento

Lubin

Posts: 467
Joined: Fri Dec 09, 2005 12:41 AM
dificil guardar Rtf en campo memo (dbf) o campo de Mysql??
Posted: Mon Dec 01, 2008 09:05 PM
Ok Willi

aplicare lo comentado por Ti y Lautaro ,, titne sentidoo

muchas gracias
Lubin


Willi Quintana wrote:Lubin, Lautaro tiene razon, "levanta" el archivo .rtf en una variable con el Memoread()... y zas.... el ejemplo que puse serviria...

Salu2
Posts: 188
Joined: Wed Feb 01, 2006 06:59 PM
dificil guardar Rtf en campo memo (dbf) o campo de Mysql??
Posted: Tue Dec 02, 2008 01:27 AM
Lubin

Hasta ahora tengo buenas experiencias trabajado con controles rtf en un campo memo, un poquito de experiencia:

1. El punto ahora es como guardar este texto a un campo memo (en el caso de usar un dbf. ) y luego com recuperarlo para continuar su edicion.


Guardar texto .rtf en un campo memo es tan sencillo como esto:
REPLACE DATOS WITH cDatos


La lectura de los datos la puedes hacer así: primero, lees el campo memo como siempre (cDatos será mi variable y DATOS el nombre del campo memo, oRTF un contro rtf):
cDatos=DATOS


Luego para cargarlo dentro de un control rtf debes hacer lo siguiente:
oRTF:LoadAsRTF(cDatos)
oRTF:SetText(cDatos)


Para grabar los datos modificados en un control rtf
IF( oRTF:IsModify(), (cDatos:=oRTF:SaveAsRTF(), GrabaBtcr(oPrueba1:dFechaControl))


Si tienes un control rtf dentro de un dialogo, para cargar el texto dentro del control, lo puedes hacer con ON INIT

ACTIVATE DIALOG oDlg ON INIT (oRTF:LoadAsRTF(cDatos), oRTF:SetText(cDatos), oRTF:SetFocus())


Saludos

Fernando Espinoza
Saludos



Fernando Espinoza
Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
dificil guardar Rtf en campo memo (dbf) o campo de Mysql??
Posted: Tue Dec 02, 2008 02:39 AM

Hi, con esta funcion evitas la sobrecarga de memoria cuando cambias bastantes bmps.....
Salu2

ClearImage(oBmp)

...
..
Function ClearImage(oImg)
PalBmpFree( oImg:hBitMap, oImg:hPalette )
oImg:hBitmap := 0
oImg:hPalette := 0
oImg:cResName := NIL
oImg:cBmpFile := NIL
oImg:Refresh()
Return(Nil)

Posts: 467
Joined: Fri Dec 09, 2005 12:41 AM
dificil guardar Rtf en campo memo (dbf) o campo de Mysql??
Posted: Tue Dec 02, 2008 03:48 AM
Gracias Fernando !!!

Creo que con esto ya tenemos casi tenemos cerrado el circulo del manejo del control para los archivos rtf (archivos que me permiten editar textos con efectos de edicion... eso semanas atras no lo sabia.. ) , tal vez por ahi se nos escape algo pero creo que estos datos son interesantes para todos.

Quizas me gustaria comentarles que para la implementacion con el estimado editor de recursos de workshop segui los siguientes pasos..

1, he crear un control tipo "control custom"

2. Le he puesto los siguientes paramentros..
en ID : nuestro clasico numero Id que dentifica el control
Class : "RichEdit20A"
Style : 4100 | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_TABSTOP

y nada mas..

Espero estar hacendo bien.. bueno al menos me esta funcionando.. salvo que alguien tenga algun Tip mas



Lubin

fespinoza wrote:Lubin

Hasta ahora tengo buenas experiencias trabajado con controles rtf en un campo memo, un poquito de experiencia:

1. El punto ahora es como guardar este texto a un campo memo (en el caso de usar un dbf. ) y luego com recuperarlo para continuar su edicion.


Guardar texto .rtf en un campo memo es tan sencillo como esto:
REPLACE DATOS WITH cDatos


La lectura de los datos la puedes hacer así: primero, lees el campo memo como siempre (cDatos será mi variable y DATOS el nombre del campo memo, oRTF un contro rtf):
cDatos=DATOS


Luego para cargarlo dentro de un control rtf debes hacer lo siguiente:
oRTF:LoadAsRTF(cDatos)
oRTF:SetText(cDatos)

Para grabar los datos modificados en un control rtf
IF( oRTF:IsModify(), (cDatos:=oRTF:SaveAsRTF(), GrabaBtcr(oPrueba1:dFechaControl))

Si tienes un control rtf dentro de un dialogo, para cargar el texto dentro del control, lo puedes hacer con ON INIT
ACTIVATE DIALOG oDlg ON INIT (oRTF:LoadAsRTF(cDatos), oRTF:SetText(cDatos), oRTF:SetFocus())

Saludos
Fernando Espinoza
Posts: 467
Joined: Fri Dec 09, 2005 12:41 AM
dificil guardar Rtf en campo memo (dbf) o campo de Mysql??
Posted: Tue Dec 02, 2008 04:44 AM
Ok Willi
buen dato..

Lubin

Willi Quintana wrote:Hi, con esta funcion evitas la sobrecarga de memoria cuando cambias bastantes bmps.....
Salu2

ClearImage(oBmp)

Function ClearImage(oImg)
PalBmpFree( oImg:hBitMap, oImg:hPalette )
oImg:hBitmap := 0
oImg:hPalette := 0
oImg:cResName := NIL
oImg:cBmpFile := NIL
oImg:Refresh()
Return(Nil)
Posts: 330
Joined: Fri May 25, 2007 09:06 PM
dificil guardar Rtf en campo memo (dbf) o campo de Mysql??
Posted: Fri Dec 19, 2008 05:55 PM

AMIGASOS Y COLEGAS.. SOBRE ESTE TEMA, ALGUIEN TIENE UN EJEMPPLO PRACTICO OPERATIVO QUE MUESTRA ACA::

GRACIAS

Posts: 467
Joined: Fri Dec 09, 2005 12:41 AM
dificil guardar Rtf en campo memo (dbf) o campo de Mysql??
Posted: Fri Dec 19, 2008 06:15 PM

Hola mantonio

Luego de recibir todas las ayudas de los amigos que respondieron en el este Post mas alguito de lectura desarrolle esta rutina que te abre un cuadro de dialogo y te permite hacer una edicion simple con el uso de Richedit,, como veras hau dos funciones cRTF_FileMime(xTextoMiMe) y otra.. SaveRTF_FileMime(oRich) que me permiten crear archivos temporales de trabajo para guardar el valor del campo binario a uno de texto ,, , pues yo uso Mysql y es necesario hacerlo.. pero si estas usando directamente Dbf.. por lo que me comentaron puedes hacer directamente el REPLACe al Campo

Espero que te sirva

Lubin

FUNCTION WMEMO_WORD(XCAMPO,XEDITA,XTITULO,XOBS)


  • XCAMPO ... es el campo a editar
  • XEDITA ... Si es .F. no se puede modificar el campo solo se muestra
    XTITULO .. Titulo del cuadro de dialogo
    XOBS... Observaciones en el cuadro de dialogo
    *FUNCION RETORNA ====>> EL VALOR DEL CAMPO EDITADO ...

local oDlg
local oRich
local hRichDLL := LoadLibrary( "riched20.dll" )
local lSyntaxHL := .F.
local xtexto_ant:=xCampo
local xtexto:=""
local z_ok:=.f.

LOCAL oDedo
LOCAL S_oTit1Font1
LOCAL S_oTit1Font2
Local S_oTit1Text
LOCAL S_cTit1Text := xtitulo
LOCAL oNOTA ,XNOTA :=""
LOCAL xfile_i_tmp:="c:\windows\my$$fwh_i.rtf"
LOCAL xfile_o_tmp:="c:\windows\my$$fwh_o.rtf"

IF XTITULO=NIL
XTITULO="Registro de Notas "
S_cTit1Text := xtitulo
ENDIF
IF .NOT. EMPTY(XOBS)
XNOTA="Nota : " +XOBS
ENDIF
IF XEDITA=NIL
XEDITA=.F.
ENDIF

IF XEDITA=NIL
XEDITA:=.T.
ENDIF

xTexto:=xCampo

  • Carga del Campo
    xfile_i_tmp:="c:\windows\my$$fwh_i.rtf"
    xfile_o_tmp:="c:\windows\my$$fwh_o.rtf"

DEFINE CURSOR oDedo RESOURCE "Dedo"
DEFINE FONT S_oTit1Font1 NAME "Roman" SIZE 10, 20
DEFINE FONT S_oTit1Font2 NAME "Roman" SIZE 8, 8

DEFINE DIALOG oDlg NAME "WMEMO_WORD"
REDEFINE SAY S_oTit1Text VAR S_cTit1Text ID 601 OF oDlg FONT S_oTit1Font1
REDEFINE SAY oNOTA VAR XNOTA ID 201 OF oDlg FONT S_oTit1Font2

oRich = TRichEdit():Redefine( 101, { || "" }, oDlg )
oRich:LoadFromRTFFile(cRTF_FileMime(xCampo)) && Lee el archivo temporal decodificado en Valor RTF,
oRich:lHighLight = .F. && Apagamos deshabilitado vizaulizacion de efectos
oRich:lReadOnly := .NOT. XEDITA && Controla si se puede editar el Campo
oRich:SetFocus()
* oRich:bGotFocus:= {||oRich:SetBkGndColor(nRGB(0,100,250)) }
* oRich:bLostFocus:= {||oRich:SetBkGndColor(nRGB(255,255,255)) }

REDEFINE BUTTON ID 8011 ACTION (Z_OK:=.T.,xfile_o_tmp:=SaveRTF_FileMime(oRich) , oDlg:End())
* Este bonton Graba del Valor del GetRTF a un File Temporal ArchivoRtfMime, para que pueda ser guardado en Cmapo Mysql

REDEFINE BUTTON ID 8012 ACTION (Z_OK:=.F., oDlg:End())

REDEFINE BUTTON ID 8022 ;
ACTION oRich:SaveToRTFFile( cGetFile( "RTF file (.rtf) | .rtf", "Ingrese el Nombre del Archivo a Grabar", "MyDocum" ) )

REDEFINE BUTTON ID 8023 ;
ACTION oRich:LoadFromRTFFile( cGetFile( "RTF file (.rtf) | .rtf" ) )

ACTIVATE DIALOG oDlg CENTERED && ON INIT (oRich:LoadAsRTF(xCampo)) && , oRich:AutoURLDetect( .t. ))

IF Z_OK && Se grabo bien...
xtexto:=memoread(xfile_o_tmp) && Se lee el Archivo Temporal MiMe conveertido para ser guardado en campo MySql
ENDIF
FreeLibrary( hRichDLL )
return xtexto

Function cRTF_FileMime(xTextoMiMe)


*Funcion que recibe un Texto Mime y debuelve el Nombre del Archivo donde fue grabado el Archivo RTF decodificado
LOCAL xfile_i_tmp:=cTempFile(GetEnv("TEMP"),"RTF") && "c:\windows\my$$fwh_i.rtf"
LOCAL xfile_o_tmp:=cTempFile(GetEnv("TEMP"),"RTF") && "c:\windows\my$$fwh_o.rtf"
memowrit(xfile_i_tmp,xTextoMime) && Grabamos el Campo en un archivo temporal
fmimeDec(xfile_i_tmp,xfile_o_tmp) && Convertimos el Archivo MIME a File RTF para ser cargado al Get
erase(xFile_i_tmp)
RETURN xfile_o_tmp && Devolvemos nombre del FileMimeRTf donde se grabo el Archivo RTF

Function SaveRTF_FileMime(oRich)


Funcion para guardar el valor RTF del richEdit en un Archivo con formato Mime para guardarlo en un campo Mysql
Retorna ... el Nombre del archivo para que sea leido con un memoread y grabado en campo Mysql
LOCAL xfile_i_tmp:=cTempFile(GetEnv("TEMP"),"DBF") && "c:\windows\my$$fwh_i.rtf"
LOCAL xfile_o_tmp:=cTempFile(GetEnv("TEMP"),"DBF") && "c:\windows\my$$fwh_o.rtf"
oRich:SaveToRTFFile(xfile_i_tmp)
fmimeenc(xfile_i_tmp,xfile_o_tmp)
RETURN xfile_o_tmp

AQUI ESTA EL CONTENIDO DEL RC... que usa

WMEMO_WORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 38, 58, 546, 212
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION
CAPTION "EDITOR MEMOS"
FONT 8, "Arial"
{
ICON "W_NOTA", -1, 10, 10, 21, 18
LTEXT "", 601, 36, 12, 334, 17
PUSHBUTTON "Exportar (Rtf)", 8022, 435, 197, 48, 12
PUSHBUTTON "Importar (Rtf)", 8023, 488, 196, 50, 13
PUSHBUTTON "Grabar ", 8011, 12, 196, 68, 13
PUSHBUTTON "Salir ", 8012, 96, 196, 62, 14
CONTROL "", 101, "RichEdit20A", 4100 | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 30, 37, 482, 148
LTEXT "", 201, 165, 196, 264, 13
}

ESTE ES EL ICONO "W_NOTA"
W_NOTA ICON LOADONCALL MOVEABLE DISCARDABLE
{
'00 00 01 00 02 00 20 20 10 00 00 00 00 00 E8 02'
'00 00 26 00 00 00 10 10 10 00 00 00 00 00 28 01'
'00 00 0E 03 00 00 28 00 00 00 20 00 00 00 40 00'
'00 00 01 00 04 00 00 00 00 00 00 02 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00'
'00 00 80 00 80 00 80 80 00 00 80 80 80 00 C0 C0'
'C0 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00'
'00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 03 88 87 38 33 77 00 00 00 00 00 00 00'
'00 00 38 FB FF FB 78 8B 88 37 70 00 00 00 00 00'
'07 88 FB FF FB FF F7 FF 8B 88 83 70 00 00 00 00'
'07 FB FF FB FF FB FF 7B FF FB 88 87 00 00 00 00'
'00 7F FB FF FB FF FB 7F FB FF FB F3 70 00 00 00'
'00 07 FF FB FF FB FF F7 FF FB FF 77 77 00 00 00'
'00 07 FB FF FB FF FB F7 FB 77 77 FF F8 00 00 00'
'00 00 7F FB FF FB FF F7 77 FB FF FB F8 00 00 00'
'00 00 7B FF FB FF FB FF FB FF FB FF F8 00 00 00'
'00 00 07 FB FF FB FF FB FF FB FF FB F8 00 00 00'
'00 00 07 FF FB FF FB FF FB FF FB FF F8 00 00 00'
'00 00 00 00 0F FB FF FB FF FB FF FB F8 00 00 00'
'00 00 06 66 60 FF FB FF FB FF FB FF F8 00 00 66'
'60 00 06 66 60 FB FF FB FF FB FF FB F8 00 06 66'
'66 00 00 06 66 0F FB FF FB FF FB FF F8 00 0E 66'
'66 06 66 60 66 0F FF FF FF FB FF FB F8 00 0E 66'
'66 06 66 60 66 00 00 00 0F FF FB FF F8 00 0E E6'
'66 06 66 60 66 07 77 77 77 FB FF FB F8 00 0E E6'
'66 0E EE E6 66 0F FB FF FB FF FB FF F8 00 00 EE'
'E0 77 0E 66 60 FB FF FB FF FB FF FB F8 00 00 00'
'00 00 0E EE 60 FF FB FF FB FF FB FF F8 00 00 00'
'00 00 00 00 0F FB FF FB FF FB FF FB F8 00 00 00'
'00 00 07 FF FB FF FB FF FB FF FB FF F8 00 00 00'
'00 00 07 FB FF FB FF FB FF FB FF FB F8 00 00 00'
'00 00 07 FF FB FF FB FF FB FF FB FF F8 00 00 00'
'00 00 07 FB FF FB FF FB FF FB FF FB F8 00 00 00'
'00 00 07 77 77 77 77 77 77 77 77 77 77 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF'
'FF FF FF FF FF FF FF E0 03 FF FF 00 00 7F FC 00'
'00 1F F8 00 00 0F F8 00 00 07 FC 00 00 03 FE 00'
'00 01 FE 00 00 01 FF 00 00 01 FF 00 00 01 FF 80'
'00 01 FF 80 00 01 FF 80 00 01 C7 00 00 01 83 00'
'00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00'
'00 01 00 00 00 01 80 00 00 01 C7 00 00 01 FF 80'
'00 01 FF 80 00 01 FF 80 00 01 FF 80 00 01 FF 80'
'00 01 FF 80 00 01 FF FF FF FF FF FF FF FF 28 00'
'00 00 10 00 00 00 20 00 00 00 01 00 04 00 00 00'
'00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80'
'00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80'
'00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF'
'00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
'00 00 FF FF FF 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 08 7B 77 08 88 00 00 00 08'
'FF FB F0 B7 88 00 00 00 8B FF FB 0F B7 80 00 00'
'8F FB FF 0F 00 80 00 00 08 FF FB 80 FB 70 00 00'
'00 0B FF FB FF 70 00 00 06 60 FB FF FB 70 06 60'
'00 60 FF FB FF 70 0E 60 E0 60 00 FF FB 70 0E E0'
'0E E0 FF FB FF 70 00 00 00 0F FB FF FB 70 00 00'
'08 FB FF FB FF 70 00 00 08 88 88 88 88 80 00 00'
'00 00 00 00 00 00 FF FF 00 00 F0 0F 00 00 E0 03'
'00 00 E0 01 00 00 F0 00 00 00 F0 00 00 00 F8 00'
'00 00 F8 00 00 00 90 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 98 00 00 00 F8 00 00 00 F8 00'
'00 00 FF FF 00 00'
}

Continue the discussion