TBlobStream Linker Error
-
Hallo,
also will aus ner DB nen jpg laden, aber irgendwie funzt das net so recht!
Hier mein code:TBlobField* f = new TBlobField(NULL); f = dynamic_cast<TBlobField*>(Main_Form->IBDataSet->FieldByName("BILD")); TBlobStream* s = new TBlobStream(f, bmRead); TJPEGImage* img = new TJPEGImage(); img->LoadFromStream(s); Image_PLU->Picture->Assign(img); delete f; delete s; delete img;der compiler sagt es ist okay aber der Linker meint dann:
[Linker Error] Error: Unresolved external '__fastcall Dbtables::TBlobStream::~TBlobStream()' referenced from C:\...\Test.OBJ
[Linker Error] Error: Unresolved external 'Dbtables::TBlobStream::' referenced from C:\...\Test.OBJ
[Linker Error] Error: Unresolved external '__fastcall Dbtables::TBlobStream::TBlobStream(Db::TBlobField *, Db::TBlobStreamMode)' referenced from C:\...\Test.OBJHabt Ihr ne Ahnung wo das prob ist????

Muß ich noch irgendwas einbinden oder so???
Danke!
-
TBlobStream ist für die BDE. Nimm TIBBlobStream, das sollte dann passen.
[EDIT] Wenn Du schon einen dynamic_cast machst (was vollkommen in Ordnung ist), solltest Du das Erbebnis prüfen. f kann NULL sein.
-
Hallo,
danke für die Antwort! Also wenn ich nun TIBBlobStream benutze
TIBBlobStream* s = new TIBBlobStream(f, bmRead);meint der Compiler:
[C++ Error] main.cpp(444): E2285 Could not find a match for 'TIBBlobStream::TIBBlobStream(TBlobField *,TBlobStreamMode)'
lol...

Wo ist nun das Problem???

In der Hilfe schaut es so aus das TIBBlobStream für Delphi ist und net für c++!?
Danke
-
Hallo
Nein TIBBlobStream ist nicht nur für Delphi. Davon sagt die Hilfe auch nichts.
Sondern dort ist der Konstruktor so angegeben__fastcall TIBBlobStream(void);bis bald
akari
-
Hallo,
hm und was heißt das jetzt genau??? Was ist an meinen code falsch?
Danke
-
Hallo

TIBBlobStream* s = new TIBBlobStream;Das bedeutet natürlich das du in diesen eigenen noch die echten Daten aus dem aktuellen Blobfeld reinbringen must, das übernimmt hier nicht der Konstruktor.
Siehe TBlobField::SaveToStream.bis bald
akari
-
So,
in anbetracht dessen das heut net mein tag ist und ich das absolut net schnalle muß ich nochmal fragen...
TIBBlobStream* s = new TIBBlobStream;gut und schön doch...
s->SaveToStream();erwartet nen Stram!
Ich wollte aber nen BlobField übergeben (lesen) um den TIBBlobStream auf nen Image zu übergeben... quasi so:
TBlobField* f = new TBlobField(NULL); f = dynamic_cast<TBlobField*>(Main_Form->IBDataSet->FieldByName("BILD")); TIBBlobStream* s = new TIBBlobStream; s->//ka was fehlt???? TJPEGImage* img = new TJPEGImage(); img->LoadFromStream(s); Image_PLU->Picture->Assign(img); delete f; delete s; delete img;Irgendwie drehe ich mich in kreis und der Groschen fällt net so recht!

Danke
-
Hallo,
kann mir denn keiner helfen und mir sagen wie ich das hinbekomme????

Danke!
-
Schau Dir mal die Methode TIBBlobStream::Create() an.
-
Okay...
Schau Dir mal die Methode TIBBlobStream::Create() an.
nach den einfügen von:
s->Create(f, bmRead);meinte der Compiler: [C++ Error] main.cpp(445): E2316 'Create' is not a member of 'TIBBlobStream'
lol hat noch jemand ne Idee wie's funzen könnte????

Danke
-
Ich hab jetzt 3 Minuten gebraucht, um in der Hilfe TIBDataSet::CreateBlobStream() zu finden...