Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-06-2005
zemog76 zemog76 is offline
Miembro
 
Registrado: ene 2005
Ubicación: Elena - Cba. - Argentina
Posts: 11
Poder: 0
zemog76 Va por buen camino
Guardar jpg en archivo XML

Hola a todos, necesito almacenar una imágen jpg en un archivo xml.
Lo que estoy haciendo es leer en un string la información del archivo que contiene la imagen. Y luego lo asigno a un nodo del archivo xml, pero tengo el problema de que al asignar el string al Nodo, que es de Tipo OleVariant, se pierde parte de lo que asigno.
Por ejemplo, el string comieza con ÿoÿä'#0#$10'JDF.... y sigue, cuando asigno, el OleVariant queda con ÿoÿä, por lo tanto al grabar el xml, sólo guarda ÿoÿä.
Soy nuevo en XML, quizás este sea un problema que ya tiene solución pero no la encuentro.
Estoy probando con una pequeña aplicación de prueba, en la que creo un xml, creo un nodo (con los diferentes TNodeType), asigno el string "con la imagen" y no he podido hacer que guarde todo el string el xml.

Espero que me puedan dar una mano.

Desde ya muchas gracias.

Guillermo
__________________
Hasta luego.

Guillermo
Responder Con Cita
  #2  
Antiguo 15-06-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Una posibilidad es que "codifiques" el contenido del jpeg que es binario, es decir, que tendrá caracteres imprimibles y no imprimibles a un formato que contenga solamente caracteres imprimibles.

Es lo mismo que se hace cuando envias un binario por correo, puesto que los protocolos solo permiten transmitir en el cuerpo de un mensaje bytes en cierto rango (creo que >=32) y lo demás son códigos de control, etc.

Para codificarlo podes valerte de las INDY, que en la pestaña Indy Misc tiene varios componentes para tal efecto (p. ej. el TidBase64Encoder).

Luego, al leer nuevamente el xml, el agente que lo haga ha de decodificar el contenido nuevamente (por ejemplo con el TidBase64Decoder).

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 15-06-2005
zemog76 zemog76 is offline
Miembro
 
Registrado: ene 2005
Ubicación: Elena - Cba. - Argentina
Posts: 11
Poder: 0
zemog76 Va por buen camino
Muchas gracias por tu pronta respuesta. Voy a intentar lo que me indicas.

Te cuento que hice esta prueba: Asigné, en tiempo de diseño, a un TEdit el contenido de la imagen (la cadena de caracteres), luego asigné al OleVariant el contenido de Edit1.Text y asi sí el OleVariant mantiene todos los caracteres. Lo raro es que asigné, en tiempo de ejecución, los caracteres de la imagen a un TEdit y sólo almacenó ÿoÿä, es decir, sólo una parte, lo mismo pasó con un TMemo.

La verdad que no se que está pasando.

Muchas gracias nuevamente.
__________________
Hasta luego.

Guillermo
Responder Con Cita
  #4  
Antiguo 15-06-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Aún cuando en delphi te sea posible guardar caracteres < 32 en un archivo xml, supongo que este no será válido para el 99.99% de otros sistemas que procesan xml, pues esperan archivos de texto y seguramente no estén preparados para manejar adecaudamente caracteres de control en el contenido.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 15-06-2005
zemog76 zemog76 is offline
Miembro
 
Registrado: ene 2005
Ubicación: Elena - Cba. - Argentina
Posts: 11
Poder: 0
zemog76 Va por buen camino
Muchas gracias. Les comenté a mis jefes acerca de lo que me dijiste y, aparentemente, la especificación de los requisitos no es la correcta.
Voy a esperar a ver que me dicen y te cuento.

Muchas gracias, nuevamente.
__________________
Hasta luego.

Guillermo
Responder Con Cita
  #6  
Antiguo 15-06-2005
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 21
JXJ Va por buen camino
y ¿en que van a emplear eso de guardar una imagen jpg, en un archivo
XML. ?

que usos le van a dar, yo no le capto. bien. :S
Responder Con Cita
  #7  
Antiguo 15-06-2005
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Para futura referencia:

Lo que se hace es que se guarda en una etiqueta CDATA: (preferible porque queda aparte de los datos como tal)

http://www.w3schools.com/xml/xml_cdata.asp

Dentro de esta, se puede escribir contenido de forma libre. Ahora bien, igual TIENES que codificar y decodificar el contenido, convirtiendo el JPG a un stream y luego a un stream de texto, mediante un Base-64 encoding (Indy lo tiene?). No tengo el dato como se hace en Delphi Win32 (lo se en .NET http://www.dotnet247.com/247referenc...57/288330.aspx) pero por aqui es el camino...

Por otro lado, que tal en simplemente poner el link a la imagen, de formato URL?
__________________
El malabarista.
Responder Con Cita
  #8  
Antiguo 15-06-2005
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Por otro lado:

"Algunas personas, cuando se enfrentan a un problema, piensan 'Ya se!, usare XML.' Ahora ellos tienen 2 problemas."



-JWZ
__________________
El malabarista.
Responder Con Cita
  #9  
Antiguo 15-06-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Cita:
Empezado por mamcx
TIENES que codificar y decodificar el contenido, convirtiendo el JPG a un stream y luego a un stream de texto, mediante un Base-64 encoding (Indy lo tiene?).
Es lo que sospechaba... y si, con las INDY se puede hacer, tal como lo dije en un mensaje anterior.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #10  
Antiguo 21-06-2005
zemog76 zemog76 is offline
Miembro
 
Registrado: ene 2005
Ubicación: Elena - Cba. - Argentina
Posts: 11
Poder: 0
zemog76 Va por buen camino
Hola a todos, efectivamente, la especificación era incorrecta.

Después de investigar por nuestra cuenta, unos de mis jefes se dio cuenta, por un ejemplo que tenemos, que se estaba codificando usando una codificación similar a la que hace le método HttpEncode. La diferencia está en que para algunos caracteres no se hace la codificación
Asi que lo que hicimos fue implementar nuestro HttpEncode y ahora se puede almacenar la imagen en el XML.

Con respecto a una pregunta anterior, la verdad no tengo idea de por que se necesita la imagen dentro del XML, yo, en la empresa, sólo soy un simple programador y hago lo que "especifican".

Muchas gracias a todos.
__________________
Hasta luego.

Guillermo
Responder Con Cita
  #11  
Antiguo 21-06-2005
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 21
JXJ Va por buen camino
YO creo que si seria util conocer para que proposito, es eso de poner
una imagen jp, o cualquier imagen en un xml.

A lo mejor, y el metodo, no es el menos engoroso, y más útil, y conociendo
para que se puede probar si hay otras formas más optimas.

oye de favor zemog76 , preguntas, que estoy intrigado.
Gracias
Responder Con Cita
  #12  
Antiguo 21-06-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Cita:
Empezado por JXJ
YO creo que si seria util conocer para que proposito, es eso de poner
una imagen jp, o cualquier imagen en un xml.
Pues eso, ya es cosa de gustos. Para poner un ejemplo de uso, supongamos que tenes un dtd de intercambio de información de productos entre un supermercado y sus proveedores, probablemente para alimentar automáticamente el catálogo de la página web y del sistema de facturación. Podes abrir la puerta para que por ese archivo de intercambio de específicaciones pueda viajar también la o las imágenes del producto, no?

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #13  
Antiguo 25-06-2005
zemog76 zemog76 is offline
Miembro
 
Registrado: ene 2005
Ubicación: Elena - Cba. - Argentina
Posts: 11
Poder: 0
zemog76 Va por buen camino
Hola, se necesita la imagen en el xml porque este xml se le envía a otra institución, y ésta es la que realizó la especificación, y se ve que les resulta util esta manera, imagino que es porque quieren tener toda la información en un solo archivo.
__________________
Hasta luego.

Guillermo
Responder Con Cita
  #14  
Antiguo 27-06-2005
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 21
JXJ Va por buen camino
Vale graciaas. ahora a pensar, en que lo puedo usar , yo. ?;:S:S
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 08:11:25.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi