FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Obtener Texto plano de un campo blob
Hola amigos del foro, tengo una pequeña consulta, como yo puedo traspasar el contenido de un campo blob, a una variable de memoria tipo string, traspasando solamente el texto plano no su formato como en el ejemplo de más abajo si lo traspaso así, el valor del la variable queda como el ejemlo:
texto := dm.tTablaCampoBlob.value: el contenido de la variable texto: {\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fswiss\fcharset1 MS Sans Serif;}{\f3\fswiss\fcharset1 MS Sans Serif;}} {\colortbl\red0\green0\blue0;} \deflang2058\pard\plain\f3\fs16 Entrevista con apoderada para informar sobre rendimiento de su hija. \par } valor esperado para la variable texto: "Entrevista con apoderada para informar sobre rendimiento de su hija" de antemano muchas gracias.
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC. |
#2
|
||||
|
||||
Parece que lo que tienes en el campo BLOB es un texto en formato RTF. De ser así quizá te sirva traspasar el BLOB a un control RichEdit. La propiedad Lines.Text del RichEdit dará entonces el texto plano.
No es una solución muy elegante pero funciona. // Saludos |
#3
|
||||
|
||||
Cita:
RichEdit1.Lines.Text := TAnotacionesANOTACION.Value; texto := RichEdit1.Lines.Text; pero sigue cargandose la variable texto con esto: ','{\rtf1\ansi\deff0\deftab720{\fonttbl{\ f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fswiss\fcharset1 MS Sans Serif;}{\f3\fswiss\fcharset1 MS Sans Serif;}} {\colortbl\red0\green0\blue0;} \deflang2058\pard\plain\f3\fs16 Entrevista con apoderada para informar sobre rendimiento de su hija. \par } ?????, no se que pasará
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC. |
#4
|
||||
|
||||
Hay dos cosas: en primer lugar el texto antes de la llave '{' de apertura sobra, aunque parece ser que se te pasó al pegar aquí el texto.
Por otro lado, parece que no puedes asignar directamente el texto a Lines.Text sino que debes hacerlo a través de un stream. Yo lo hice así:
donde Blob sería una variable string con el contenido del campo blob. Con esto debe cargarse correctamente el texto (con todo y formato) en el RichEdit y ahora sí, RichEdit1.Lines.Text debe contener el texto plano. Otra cosa, aunque no sé en específico el caso de Interbase, las componentes TBlobField tienen el método SaveToStream con lo que podrías pasar directamente del campo al StringStream. // Saludos |
#5
|
||||
|
||||
Cita:
Stream := TStringStream.Create(TAnotacionesANOTACION.Value); try Stream.Seek(0, soFromBeginning); RichEdit1.Lines.LoadFromStream(Stream); finally Stream.Free; end; texto := RichEdit1.Lines.Text; Donde TAnotacionesANOTACION.Value es el campo con el campo blob pero se sigue cargando como rtf, seguramente debería funcionar así, pero por algun motivo sigue así, gracias por la ayuda una vez más.
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC. |
#6
|
||||
|
||||
Caso contrario
hola Manuel mira yo tengo el mismo problema que tu pero al reves yo no puedo obtener el texto enriquecido y me devuelvce texto plano asi que podriamos intercambiar trozos de codigo para que cadaquien tenga lo contrario no
|
#7
|
|||
|
|||
Existe una UDF que puedes instalarla en BD. La funcion se llama
F_BlobAsPchar(campo_memo). No recuerdo el link, pero buscalo en los foros. salu2. |
#8
|
||||
|
||||
Creo que esta udf, al estar almacenado el texto en la BD como texto enriquecido, no te servirá de nada. No es que la conozca personalmente, pero el nombre F_BlobAsPchar no indica ningún tipo de interpretación del rtf.
Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
|
|