![]() |
Datenbank: TurboDB • Version: 6 • Zugriff über: SQL
Aus TurboDB Blob in Stream schreiben
Hallo Freunde der Nacht,
über folgendem Problem sitze ich schon einige Tage und komme nicht weiter. Ziel ist es, ein Blobfeld (meistens JPEG) aus der Datenbank auszulesen, in einen Stream zu schreiben und dann in einem TImage auszugeben. Der Code aus der Klasse (FBLOB1 = TMemoryStream, Stream0 = TStream)
Code:
Der Code im Programm (J = TJpegImage)
Stream0 := CreateBlobStream(FieldByName('BLOB1'), bmRead);
Stream0.Position := 0; FBLOB1.Create; FBLOB1.Write(Stream0, fmOpenRead); FBLOB1.CopyFrom(Stream0, Stream0.Size);
Code:
Das Problem besteht denke ich ganz am Anfang, bei der Übergabe des Blobs an den Stream.
J.LoadFromStream(T.BLOB1);
Image1.Picture.Assign(J); Hat wer einen guten Rat parat? |
AW: Aus TurboDB Blob in Stream schreiben
Hallo,
ein
Delphi-Quellcode:
FieldByName('BLOB1').SaveToStream()
gibt es nicht zufällig? ggf. schauen ob du das Feld auf ein TBlobField (oder wie auch immer das bei TubroDB heißt) casten musst... Grüße |
AW: Aus TurboDB Blob in Stream schreiben
Zitat:
Casten brauch ich denke ich nichts. der Fehler tritt in folgender Zeile auf.
Code:
edit:
Stream0 := CreateBlobStream(FieldByName('BLOB1'), bmRead);
mittlerweile habe ich den code ein bisschen umgeändert, funktioniert aber immernoch nicht.
Code:
Stream0 := CreateBlobStream(FieldByName('BLOB1'), bmRead);
J.LoadFromStream(Stream0); Form3.Image1.Picture.Assign(J); |
AW: Aus TurboDB Blob in Stream schreiben
Zitat:
Zitat:
schon mal die Dokumentation gelesen? z.B. das Kapitel über TTdbBlobProvider? oder das über das Demo "Images"? TurboDB ist bei mir schon verdammt lange her, daher kenne ich mich nicht mehr soo gut aus... Grüße |
AW: Aus TurboDB Blob in Stream schreiben
Wie heißt denn die Query (oder die Table), deren Feld BLOB1 heißt...
Irgendwie fehlt diese Information nicht nur mir, sondern wohl auch dem Compiler... Grüße Mikhal PS: Ich bin an dieser Stelle immer sehr faul, ich caste immer:
Delphi-Quellcode:
(Query.FindField('Blub') As TBlobField).SaveToStream(s)
|
AW: Aus TurboDB Blob in Stream schreiben
Zitat:
Zitat:
|
AW: Aus TurboDB Blob in Stream schreiben
Das hier dürfte übrigens auch nicht so recht klappen:
Zitat:
Delphi-Quellcode:
heißen.
FBLOB1 := TMemoryStream.Create;
|
AW: Aus TurboDB Blob in Stream schreiben
Zitat:
Code:
ist die Query.
SQL.Text := 'Select * from TEST1 where ID = :I';
prepare; ParamByName('I').AsInteger := FID; Zitat:
mit einer ttdbDatabase-TdbTable-TDataSource-TdbBlobproviderkette funktioniert es auch. Trotzdem würde ich gerne ohne die Komponenten und nur mit Code arbeiten. Der Fehler ist folgendert: Zugriffsverletzung bei Adresse XXXXXXXX in Modul 'xxxxxx.exe'. Lesen von Adresse XYZXYZXY Thx DeddyH für die Korrektur, nur soweit wird der Code gar nicht ausgeführt. |
AW: Aus TurboDB Blob in Stream schreiben
Liste der Anhänge anzeigen (Anzahl: 1)
Mit beiliegener Unit kannst Du beliebige Grafiken (PNG,JPG etc.) speicher und laden, es wird allerdings eine Info über den Typ im Blob mit abgelegt, gegf. anpassen.
|
AW: Aus TurboDB Blob in Stream schreiben
sorry schonmal für den doppelpost, aber der obere ist irrelevant geworden. das blobfeld ist nun im stream.
Code:
hat die Lösung gebracht, thx dafür.
(FindField('BLOB1') As TBlobField).SaveToStream(MS);
nächstes Problem
Code:
Ich denke das Problem ist, dass die TImage Komponente nicht weiß welcher Bildtyp da ankommt. Weiß einer dafür eine Lösung? Oder liegt das Problem woanders.
J := TJPEGImage.Create;
J.LoadFromStream(MS); Form3.Image1.Picture.Assign(J); Die Fehlermeldung ist eine Zugriffsverletzung bei Adresse ABCDEFGJ usw. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz