Autor Beitrag
Siggus19
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Di 08.04.03 12:19 
Ich habe da noch ein Problem mit dem Abspeichern und laden von Bildern aus der Datenbank. Ich habe ein Panel auf dem ich per Mausklick ein bild reinladen kann mit hilfe eines open dialog. Er zeigt es mir auch an und speichert es in der Datenbank aber wenn ich es öffnen will bringt er jpeg Fehler #50.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
  if imgGlas.Picture.Graphic <> nil then
  begin
  JPG := TJPEGImage.Create;
  Strm := TblobStream.Create(TBlobField(qry.Fieldbyname   ('Bild')), bmWrite);
  JPG.Assign(ImgGlas.picture);
  JPG.SaveToStream(Strm);
  qry.Post;
  jpg.free;
  strm.Free;
  end;


und abruf:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
  JPG := TJPEGImage.Create;
  Strm := TblobStream.Create(TBlobField    (qry.Fieldbyname'Bild')), bmRead);
  JPG.LoadFromStream(Strm);
  Image := Timage.Create(self);
  ImgGlas.parent := PImage ;    
  ImgGlas.Tag := qry.FieldByName('ID').asinteger;
  ImgGlas.Picture.Assign(JPG);
  ImgGlas.IncrementalDisplay := True;
  ImgGlas.Stretch := true;
  Strm.Free;
  JPG.Free;


Moderiert von user profile iconKlabautermann: Dieses Topic aus dem Thread "Probleme beim löschen von Dynamischen Tabsheets" extrahiert.
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Di 08.04.03 12:36 
Vielleicht weil im aktuellen Datensatz gar kein Bild vorhanden ist? Ein welchen Ereignis lädst du das Bild? So mach ich das immer:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TfrmMain.srcDataChange(Sender: TObject; Field: TField);
var
   ms  : TMemoryStream;
   pg  : TJpegImage;
begin
  if  tblM_BILD.IsNull = False then begin
       ms  := TMemoryStream.Create;
       pg  := TJpegImage.Create;
       try
         tblM_BILD.SaveToStream(ms);
           ms.Position := 0;
           pg.LoadFromStream(ms);
           img.Picture.Assign(pg);
       finally
         ms.Free;
           pg.Free;
       end;
   end
   else
       img.Picture := nil;
end;


Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Siggus19 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Di 08.04.03 12:49 
hier wird es aus der Datenbank gelesen
ausblenden Quelltext
1:
2:
Strm := TblobStream.Create(TBlobField(qry.Fieldbyname('Bild')), bmRead);
  JPG.LoadFromStream(Strm);


und hier ins image geladen
ausblenden Quelltext
1:
  ImgGlas.Picture.Assign(JPG);					


gruß alex
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Di 08.04.03 13:00 
Argh, mit dem Kopf auf den Tisch schlag. :autsch: Die Codezeilen konnte ich schon interpretieren. Falsch verstanden, egal.
Auf jeden Fall seh ich keine Prüfung, ob in dem betreffenden Feld überhaupt was gespeichert ist. Und wenn du versuchst Daten die gar nicht da sind in ein Image zu laden, dann krachts eben.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...