Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Aus TurboDB Blob in Stream schreiben (https://www.delphipraxis.net/169843-aus-turbodb-blob-stream-schreiben.html)

Klaus01 16. Aug 2012 10:11

AW: Aus TurboDB Blob in Stream schreiben
 
Wird es so besser?

Delphi-Quellcode:
J := TJPEGImage.Create;
ms.seek(0,soFromBeginning); // oder ms.position :=0
J.LoadFromStream(MS);
Form3.Image1.Picture.Assign(J);
Grüße
Klaus

machstuhl 16. Aug 2012 10:17

AW: Aus TurboDB Blob in Stream schreiben
 
Zitat:

Zitat von Klaus01 (Beitrag 1178448)
Wird es so besser?

Delphi-Quellcode:
J := TJPEGImage.Create;
ms.seek(0,soFromBeginning); // oder ms.position :=0
J.LoadFromStream(MS);
Form3.Image1.Picture.Assign(J);
Grüße
Klaus

Nein.

Ein
Code:
(FindField('BLOB1') As TBlobField).SaveToStream(MS);
ms.Position := 0; // <<<<
J := TJPEGImage.Create;
J.LoadFromStream(MS);
Form3.Image1.Picture.Assign(J); // Hier tritt der Zugriffsfehler auf
bringt auch keine Besserung.

Thx für die Mühen =)

Klaus01 16. Aug 2012 10:22

AW: Aus TurboDB Blob in Stream schreiben
 
.. sollte aber eigentich funktionieren.

Im Stream befindet sich ein jpg Image?
Ist der Stream o.k. - sind darin Daten vorhanden?

eventuell noch eine Fehlerbehandlung einbauen
Delphi-Quellcode:
(FindField('BLOB1') As TBlobField).SaveToStream(MS);
ms.Position := 0;
J := TJPEGImage.Create;
try
  try
    J.LoadFromStream(MS);
    Form3.Image1.Picture.Assign(J);
  except
    on E:Exception do
      showMessage(E.Message);
  end;
finally
  j.free;
end;
Grüße
Klaus

DeddyH 16. Aug 2012 10:23

AW: Aus TurboDB Blob in Stream schreiben
 
Existiert das Formular bzw. das TImage auch zu diesem Zeitpunkt? Ich finde den hartkodierten Zugriff auf VCL-Controls in diesem Kontext etwas unglücklich, zumal da auch noch mit benannten Instanzen hantiert wird.

machstuhl 16. Aug 2012 10:35

AW: Aus TurboDB Blob in Stream schreiben
 
Zitat:

Zitat von DeddyH (Beitrag 1178454)
Existiert das Formular bzw. das TImage auch zu diesem Zeitpunkt? Ich finde den hartkodierten Zugriff auf VCL-Controls in diesem Kontext etwas unglücklich, zumal da auch noch mit benannten Instanzen hantiert wird.

Ja, es existiert beides.

Zitat:

Zitat von Klaus01 (Beitrag 1178453)
.. sollte aber eigentich funktionieren.

Im Stream befindet sich ein jpg Image?
Ist der Stream o.k. - sind darin Daten vorhanden?

eventuell noch eine Fehlerbehandlung einbauen
Delphi-Quellcode:
(FindField('BLOB1') As TBlobField).SaveToStream(MS);
ms.Position := 0;
J := TJPEGImage.Create;
try
  try
    J.LoadFromStream(MS);
    Form3.Image1.Picture.Assign(J);
  except
    on E:Exception do
      showMessage(E.Message);
  end;
finally
  j.free;
end;
Grüße
Klaus

done, bringt leider nicht viel, da er bei
Code:
Form3.Image1.Picture.Assign(J);
direkt rausspringt.

Daten befinden sich im Stream. Ein ShowMessage(IntToStr(MS.Size)); gibt mir den Wert 777835 zurück. realistisch?

Wie kann ich dem TImage verklickern, dass da ein JPEG ankommt, oder liegt da nicht der Hase im Pfeffer?+


edit:
Code:
J.LoadFromStream(MS);
J.SaveToFile('C:\test.jpeg');
speichert mir die File auf C. D.h. der Stream ist korreckt und das Bild ist im TJpegImage angekommen.

Klaus01 16. Aug 2012 10:38

AW: Aus TurboDB Blob in Stream schreiben
 
Zitat:

Zitat von machstuhl (Beitrag 1178456)
done, bringt leider nicht viel, da er bei
Code:
Form3.Image1.Picture.Assign(J);
direkt rausspringt.

Wie kann ich dem TImage verklickern, dass da ein JPEG ankommt, oder liegt da nicht der Hase im Pfeffer?

Das die Fehlerbenhandlung den Fehler nicht behebt war mit klar - nur dachte ich, dass eventuell
ein verwertbare Fehlermeldung dabei herauskommen würde.

Das TImage weiß das ein jpg hereinkommt, Du übergibst ja die jpg Instanz.

Grüße
Klaus

machstuhl 16. Aug 2012 11:28

AW: Aus TurboDB Blob in Stream schreiben
 
Habs, danke an alle.

Der Code in der Klasse.

Code:
FBLOB1 := TMemoryStream.Create;
(FindField('BLOB1') As TBlobField).SaveToStream(FBLOB1);
FBLOB1.Position := 0;
Der Code vom Formular
Code:
T := TTEST1_tdb.create;
T.ID := 8;
T.Load;
J := TJpegImage.Create;
J.LoadFromStream(T.BLOB1);
Image1.Picture.Assign(J);
FreeAndNil(J);
FreeAndNil(T);
Im Endeffekt lag es dadran, dass ich aus der Klasseunit heraus irgendwie nicht Image1 befüllen konnte. kA warum.

Sir Rufo 17. Aug 2012 03:41

AW: Aus TurboDB Blob in Stream schreiben
 
Weil du nicht wahr haben willst, was andere dir hier schreiben.

Stichwort Casten: "Nö, ich muss nicht casten" - Lösung: Casten :roll:

Stichwort Direkter Zugriff auf eine Komponente: "Nö, da ist alles da" - Lösung: Ohne direkten Zugriff :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:24 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz