Hola a todos, esta es la primera vez que entro al foro. Quería preguntar si alguien me puede ayudar con esto:
Estoy tratando de mostrar una imagen jpg almacenada como objeto OLE en una bd Access, y me da este número de error: JPEG error #68.
Lo que hago para mostrar la imagen es utilizar un objeto TImage, asignándole un objeto TJpegImage, a partir de un flujo de un campo de una tabla (que contiene la imagen). Todo esto se hace cuando se presiona un boton. Les paso el código del botón:
Código:
procedure TForm1.botonClick(Sender: TObject);
var
flu : TADOBlobStream;
Pic : TJpegImage;
begin
flu := TADOBlobStream.Create
(AdoTable1Foto, bmRead);
try
flu.Seek(JpegStartsInBlob(AdoTable1Foto),
soFromBeginning); //Esta función busca el inicio de la imagen
Pic:=TJpegImage.Create;
try
Pic.LoadFromStream(flu); //Es aquí donde da el error
ADOImage.Picture.Graphic:=Pic;
finally
Pic.Free;
end;
finally
flu.Free
end;
end;
También les paso el código de la función de búsqueda:
Código:
function JpegStartsInBlob
(PicField:TBlobField):integer;
var
flu : TADOBlobStream;
buffer : Word;
hx : string;
begin
Result := -1;
flu := TADOBlobStream.Create(PicField, bmRead);
try
while (Result = -1) and
(flu.Position + 1 < flu.Size) do
begin
flu.ReadBuffer(buffer, 1);
hx:=IntToHex(buffer, 2);
if hx = 'FF' then begin
flu.ReadBuffer(buffer, 1);
hx:=IntToHex(buffer, 2);
if hx = 'D8' then Result := flu.Position - 2
else if hx = 'FF' then
flu.Position := flu.Position-1;
end; //if
end; //while
finally
flu.Free
end; //try
end;
Desde ya muchas gracias por su respuesta. Saludos..