[Lazarus] TDBImage -AV [SOLVED] for Jpeg images
Osvaldo Filho
arquivostcf at gmail.com
Fri Sep 5 17:48:47 CEST 2008
Thankyou Joost, i will change and test.
2008/9/4 Joost van der Sluis <joost at cnoc.nl>
> Your solution only works if you know for sure that the field contains a
> jpeg-image. The lazarus-code assumes that the blob-fields start with the
> extension from the image, so that it can 'detect' what kind of image it
> is.
> That means offcourse, that you also have to use a TDBEdit to place the
> image into the database. Or else the leading extension won't be there.
>
> But I think I saw something else which is strange.
>
> btw: maybe you could send a patch (diff -u) next time, that's easier to
> read for people who are used to it. This is kind of a puzzle, althoug
> maneagable.
>
> Op woensdag 03-09-2008 om 14:56 uur [tijdzone -0300], schreef Osvaldo
> Filho:
> > The problem, perhaps, is in s.readstring.
> > =================================
> > //dbimage.inc line 135
> >
> > procedure TDBImage.LoadPicture;
> > var //s : TMemory; // ( lazarus team)
> > s : TMemoryStream; // ( mine )
> > GraphExt : string;
> > gc : TGraphicClass;
> > AGraphic : TGraphic;
> >
> > begin
> > if not FPictureLoaded then
> > begin
> > FUpdatingRecord := True;
> > if not assigned(FDatalink.Field) then
> > Picture.Assign(FDatalink.Field)
> > else
> > if FDatalink.field.IsBlob then
> > begin
> > if FDatalink.field is TBlobField then
> > begin
> > if FDatalink.Field.IsNull then
> > begin
> > Picture.Clear;
> > exit;
> > end;
> > //FDataLink.DataSet.CreateBlobStream(FDataLink.Field,bmRead); //
> > (lazarus team)
>
> I guess this should be S:=FDatalink.Dataset.CreateBlobstream.....etc
> Maybe you also have to add the s.position := 0?
>
> > s := TMemoryStream.create; // ( mine )
> > (FDataLink.Field as TBlobField).SaveToStream(s); // ( mine )
> > s.Position:= 0; // ( mine )
> >
> > if (S=Nil) or (s.Size = 0) then
> > begin
> > Picture.Clear;
> > exit;
> > end;
> > try
> > //GraphExt := s.ReadAnsiString; // (lazarus team)
>
> Add 'gc := nil; AGraphic := nil;' here, as mentioned by someone else.
>
> > // gc := GetGraphicClassForFileExtension(GraphExt); //
> > (lazarus team)
> > // if assigned(gc) then // (lazarus team)
> > // begin // (lazarus team)
> >
> > Picture.Jpeg.LoadFromStream(s); // ( mine )
> >
> > //AGraphic. := gc.Create; // (lazarus team)
> > //AGraphic.LoadFromStream(s); // (lazarus team)
> > //Picture.Assign(AGraphic);
> > //end;
> > finally
> > //if assigned(AGraphic) then AGraphic.Free; // (lazarus
> > team)
> > s.Free;
> > end {try}
> >
> > end
> > else
> > Picture.Assign(FDataLink.FField);
> > end;
> > FUpdatingRecord := False;
> > end;
> > end;
> > =================================
> >
> > 2008/9/2 Osvaldo TCF - Listas <arquivostcf at gmail.com>
> > With my image: a .jpg file
> > ---------------------------
> > in dbimage.inc, line 163:
> > try
> > GraphExt := s.ReadAnsiString;
> >
> > gc := GetGraphicClassForFileExtension(GraphExt);
> > if assigned(gc) then
> > begin
> > AGraphic := gc.Create;
> > AGraphic.LoadFromStream(s);
> >
> > Picture.Assign(AGraphic);
> > end;
> > -------------------------------------------
> >
> > gc is not assigned, is it correct?
> > ==========================================================
> >
> > The AV ocour here:
> > dbimage.inc line 175
> > ----------------------
> > Picture.Assign(AGraphic);
> > end;
> > finally
> > line 175>> if assigned(AGraphic) then AGraphic.Free;
> > s.Free;
> > end {try}
> > ----------------------
> >
> > Em Ter, 2008-09-02 às 10:34 +0200, Joost van der Sluis
> > escreveu:
> >
> >
> > > Op maandag 01-09-2008 om 12:05 uur [tijdzone -0300], schreef
> > Osvaldo
> > > Filho:
> > > > I can not use tdbimage, access violation!
> > > >
> > > > loadpicture error?
> > >
> > > Hmm... I had that working with a few hacks. Maybe that it
> > doesn't work
> > > anymore with the latest image changes in Lazarus-svn. So
> > which fpc and
> > > lazarus version are you using?
> > >
> > > Joost
> > >
> > >
> > > _______________________________________________
> > > Lazarus mailing list
> > > Lazarus at lazarus.freepascal.org
> > > http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
> >
> >
> >
> >
> > _______________________________________________
> > Lazarus mailing list
> > Lazarus at lazarus.freepascal.org
> > http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
> --
>
> _______________________________________________
> Lazarus mailing list
> Lazarus at lazarus.freepascal.org
> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20080905/87eabacc/attachment-0007.html>
More information about the Lazarus
mailing list