Ver Mensaje Individual
  #2  
Antiguo 11-02-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: 24
seoane Va por buen camino
No hay que olvidar que en el fondo los objetos no son mas que punteros. Así cuando asignas un objeto a otro, lo que haces es que ambos punteros pasan a apuntar al mismo objeto. Es decir, cuando tu haces esto:
Código Delphi [-]
Result := Grafico;
Grafico.free;
Result pasa a apuntar a un objeto que ya no existe.

Una posible solución es pasar el TImage como parámetro de la función. Algo así:
Código Delphi [-]
procedure TMMaestros.CargarFoto(Tabla, CodTabla, Titulo: String; Imagen: TImage);

// ......


// CARGAR LOGO EN IMAGEN
try
Stream := Archivos.CreateBlobStream(ArchivosArchivo,bmRead);
if ExtractFileExt(ArchivosNombre.AsString) = '.bmp' then
Grafico := TBitmap.Create
else
if ExtractFileExt(ArchivosNombre.AsString) = '.jpg' then
Grafico := TJPEGImage.Create;
Grafico.LoadFromStream(Stream);
Imagen.Picture.Graphic:= Grafico;
Grafico.free;
Stream.Free;
except
Grafico.free;
Stream.free;
end;
Responder Con Cita