La Web del Programador: Comunidad de Programadores
 
    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.