Ver Mensaje Individual
  #2  
Antiguo 19-06-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 26
seoane Va por buen camino
Creo que la forma en la que lo estas haciendo es correcta. Primero lees un record, con un tamaño conocido, y una vez obtienes el tamaño de la imagen que viene a continuación lees la imagen. Es el mismo método que yo mismo usaría.

Lo que no entiendo muy bien es donde esta problema, aunque añadieras un campo mas (TBitmap o TJPEGImage) este solo seria un puntero a ese objeto, tu tendrías que crear el objeto y leer la imagen desde el fichero. Yo creo que deberías de ir un poco mas allá y empezar a utilizar clases (objetos) en vez de records para manejar estas estructuras un poco complicadas.

Por último, y si mi consejo de utilizar objetos no te convence, utiliza un record con un tamaño variable, gracias al milagro de los punteros. Declara un record tal que así:
Código Delphi [-]
TFileRecord = packed record
  Dato1: Cardinal;
  Dato2: SmallInt;
  Dato3: Byte; //datos varios....
  PhotoSize: Cardinal; //largo en bytes de la foto...
  Photo: array[0..0] of Byte;
 end;

Y un puneto como este:
Código Delphi [-]
  PFileRecord = ^TFileRecord;

Ahora solo tienes que leer los primeros campos como hacias antes, obtener el tamaño de la imagen, reservar tanta memoria como necesites para guardar los campos y la imagen, y guardar en ella los campos y la imagen. Ahora a través de los campos del puntero tendrás acceso a todos los campos del record y a los datos de la imagen.

Perdona que no te ponga código, pero ando un poco ocupado.
Responder Con Cita