AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Aus TurboDB Blob in Stream schreiben
Thema durchsuchen
Ansicht
Themen-Optionen

Aus TurboDB Blob in Stream schreiben

Ein Thema von machstuhl · begonnen am 15. Aug 2012 · letzter Beitrag vom 17. Aug 2012
Antwort Antwort
machstuhl

Registriert seit: 17. Jul 2012
40 Beiträge
 
#1

Aus TurboDB Blob in Stream schreiben

  Alt 15. Aug 2012, 14:48
Datenbank: TurboDB • Version: 6 • Zugriff über: SQL
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:
  Stream0 := CreateBlobStream(FieldByName('BLOB1'), bmRead);
  Stream0.Position := 0;
  FBLOB1.Create;
  FBLOB1.Write(Stream0, fmOpenRead);
  FBLOB1.CopyFrom(Stream0, Stream0.Size);
Der Code im Programm (J = TJpegImage)
Code:
  J.LoadFromStream(T.BLOB1);
  Image1.Picture.Assign(J);
Das Problem besteht denke ich ganz am Anfang, bei der Übergabe des Blobs an den Stream.

Hat wer einen guten Rat parat?
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.387 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Aus TurboDB Blob in Stream schreiben

  Alt 15. Aug 2012, 15:16
Hallo,

ein

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
  Mit Zitat antworten Zitat
machstuhl

Registriert seit: 17. Jul 2012
40 Beiträge
 
#3

AW: Aus TurboDB Blob in Stream schreiben

  Alt 15. Aug 2012, 15:21
Hallo,

ein

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
Zufällig nicht, das wäre ja viel zu einfach .
Casten brauch ich denke ich nichts.

der Fehler tritt in folgender Zeile auf.
Code:
Stream0 := CreateBlobStream(FieldByName('BLOB1'), bmRead);
edit:

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);

Geändert von machstuhl (15. Aug 2012 um 15:24 Uhr)
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.387 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Aus TurboDB Blob in Stream schreiben

  Alt 15. Aug 2012, 16:10
Casten brauch ich denke ich nichts.
Ok, wenn du denkst..

der Fehler tritt in folgender Zeile auf.
Code:
Stream0 := CreateBlobStream(FieldByName('BLOB1'), bmRead);
gut für dich, schlecht für uns... weil wir nicht wissen was für ein Fehler...

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
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Aus TurboDB Blob in Stream schreiben

  Alt 15. Aug 2012, 16:22
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:
(Query.FindField('Blub') As TBlobField).SaveToStream(s)
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.387 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Aus TurboDB Blob in Stream schreiben

  Alt 15. Aug 2012, 16:51
Wie heißt denn die Query (oder die Table), deren Feld BLOB1 heißt...
ich vermute stark, dass das ne "with...." Konstruktion ist. Äh nein, ich hoffe es...


PS: Ich bin an dieser Stelle immer sehr faul, ich caste immer:
(Query.FindField('Blub') As TBlobField).SaveToStream(s)
er denkt ja, dass er nicht casten muss, also müssen wir halt den schweren Weg gehen....
  Mit Zitat antworten Zitat
machstuhl

Registriert seit: 17. Jul 2012
40 Beiträge
 
#7

AW: Aus TurboDB Blob in Stream schreiben

  Alt 16. Aug 2012, 10:36
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:
(Query.FindField('Blub') As TBlobField).SaveToStream(s)
Code:
SQL.Text := 'Select * from TEST1 where ID = :I';
prepare;
ParamByName('I').AsInteger := FID;
ist die Query.

Casten brauch ich denke ich nichts.
Ok, wenn du denkst..

der Fehler tritt in folgender Zeile auf.
Code:
Stream0 := CreateBlobStream(FieldByName('BLOB1'), bmRead);
gut für dich, schlecht für uns... weil wir nicht wissen was für ein Fehler...

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
ja, beides.
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.
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:53 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