Pregunta: | 61179 - GUARDAR UN JPG EN UNA ESTRUCTURA DE DATOS |
Autor: | Mario EAG |
Hola, necesito un favor enorme, estoy utilizando delphi 7, necesito con urgencia la manera de almacenar un archivo de tipo TYPE que guarde los siguientes campos:
nombre, direccion, documento de identdad y foto ahora tengo esto algo como esto type persona=Record nombre:string[30]; apellido:string[30]; doc:string[8]; foto: ?????; //quiero que sea un jpg end; lo que no puedo es el almacenar el jpg, ¿maestros, como se hace? guardar, abrir, desplegar....me estoy volviendo mono Les agradezco de antemano Un abrazo enorme |
Respuesta: | Erwin Alejandro Perez Escobedo |
Primero que nada, si es a un archivo necesitaras asignar memoria suficiente para cualquier imagen desde el principio, por lo que el tamaño del campo foto debera ser suficientemente grande como para alojar cualquiera de las imagenes que planees almacenar.
Segundo, usa TStringStream para obtener una cadena de texto que represente la imagen, esto lo puedes hacer asi: 1.- Guardas la imagen en el stream, supongo que la tendrias en un TImage: Image1.Picture.Graphic.savetoStream(aStream); (aStream : TStringStream) 2.- Lees de aStream la cadena de texto: aStream.Seek(0, soFromBeggining); // Correr al principio para leer desde ahi. sFoto:= aStream.DataString; persona1.foto:=sFoto; (Asumo foto: String[1000000]; para un espacio de unos 900kb) Para mostrar la foto: 1.- Lees el texto: sFoto:=persona1.foto; aStream.WriteString; aStream.Seek(0, soFromBeggining); // Colocarnos al principio del stream. aFoto.LoadFromStream(aStream); // Aqui aFoto: TJPEGImage; se encuentra en la Unit JPEG; Image1.Picture.Graphic:=aFoto; Claro que falta el codigo para inicializar el stream y el TJPGImage y para liberar la memoria. te lo dejo de tarea. Espero te sirva. |