Entwickler-Ecke
Datenbanken - [Firebird 2.5] Problem mit Blob-Feldern nach Delphi Upgrade
CenBells - Mi 05.03.14 17:59
Titel: [Firebird 2.5] Problem mit Blob-Feldern nach Delphi Upgrade
Hallo zusammen,
ich habe eine Firebird 2.5 Datenbank mit Blob Feldern (Sub_type Text).
Die Anwendung, die auf diese DB zugreift, habe ich vor kurzem von D2007 nach DXE5 portiert.
Nun habe ich das Problem, das der lesende Zugriff auf die Blob-Felder (im grid als WideMemo angezeigt) nicht mehr funktioniert - egal was ich probiere, es werden immer nur die ersten 2 byte in ein Memo geladen :/
Ich vermute, das hängt irgendwie mit der delphi-internen Unicode-Umstellung zusammen. Leider habe ich bisher noch keine Möglichkeit gefunden, wie ich das Problem in diesem Fall beheben kann.
Jemand von euch eine Idee?
Vielen Dank im Voraus.
Viele Grüße
Ken
PS: Ich benutze die IBExpress komponenten von XE5
Delete - Mi 05.03.14 19:47
Mit welchem Zeichensatz wurde das Blobfeld angelegt?
CenBells - Mi 05.03.14 20:31
Hallo,
das feld wurde mit iso_8859-1 angelegt. Die Verbing nutzt das auch.
Gruss
Ken
Delete - Mi 05.03.14 20:37
Heißt das, du hast in deiner Verbindungskomponente Unicode eingestellt und greifst damit auf Nicht-Unicode-Felder zu?
Was passiert, wenn du das Blobfeld als String ausliest?
Delphi-Quelltext
1: 2: 3: 4:
| Var MyString : String; begin MyString := Dataset.FieldByName(Blobfeld).AsString; |
Sind dann auch nur zwei Zeichen im String zu sehen? Wieviele Zeichen sind denn im Blobfeld vorhanden?
CenBells - Mi 05.03.14 23:04
Hallo,
Also ich habe in der Verbindung auch iso_8559-1 eingestellt.
Wenn ich das Blobfeld als String auslese, werden auch nur 2 Zeichen angezeigt. In den Blobs sind ca 600 Byte enthalten. Mit Ibexpert werden die Inhalte auch angezeigt.
Ich bekomme die Daten halt mit Xe5 derzeit nicht ausgelesen.
Noch jemand ne Idee?
Gruß
Ken
Delete - Mi 05.03.14 23:45
Bin mir mangels XE5 jetzt nicht ganz sicher, aber soweit ich weiß, unterstützen die IBX-Komponenten nur Interbase, nicht aber Firebird. Sollte man da nicht besser das mitgelieferte FireDac einsetzen?
Ich hatte eben erst gelesen, daß du die IBX-Komponenten einsetzt, mit denen du damals wohl auch die D2007-Anwendung entwickelt hattest. Schon bei D2009 (vielleicht auch früher?) hatte CodeGear die Unterstützung für Firebird nicht mehr mitgeliefert, um so die Verwendung der hauseigenen Datenbank Interbase zu erzwingen. Seit XE3, XE4 oder XE5 sind dafür die FireDac-Komponenten dabei, mit denen man auf alle gängigen Datenbanken zugreifen können soll.
Eine genauere Versionsgschichte mußt du selber recherchieren, besser weiß ich's gerade nicht.
WasWeißDennIch - Do 06.03.14 10:20
http://compaspascal.blogspot.de/2009/08/why-to-use-firebirdibx.html
Zitat: |
Jeff Overcash originally made it clear, that IBX doesn't officially support Firebird, and he has no intention to implement it. |
Es ist also gut möglich, dass es sich sogar um eine unglückliche Kombination von Zeichensatz und Inkompatibilitäten handeln könnte. Hast Du es mal mit alternativen Komponenten versucht? Neben den kostenpflichtigen wie IBDAC oder FIBPlus sind auch brauchbare kostenfreie erhältlich, mir persönlich fällt da gleich
UIB [
http://sourceforge.net/projects/uib/] ein.
CenBells - Do 06.03.14 11:39
Hallo zusammen,
vielen Dank für die Hinweise. Es scheint tatsächlich eine sehr unglückliche Kombination der Probleme zu sein, die erst mit Unicode-Delphis auftritt.
Ich habe soeben mit den FireDAC komponenten probiert, das Blob Feld auszulesen. Das klappt wie gewünscht.
Dann habe ich mir den Blob-Inhalt mal etwas näher angeschaut. Als zweites Zeichen steht #0 im Blob-Feld - darüber scheint die BlobStream Implementierung in IBExpress zu stolpern. Evtl hängt das auch noch mit dem Sub_Type text zusammen.
Ich schau mal, ob ich das mit einem anderen sub_type umgehen kann, da ich momentan wenig interesse hab, das komplette DB Layer zu ersetzen :/
edit: Ich habe den Sub_type des Blob_felds von text auf binary geändert und schon geht's auch mit den IBExpress komponenten
Gruß
Ken
CenBells - Do 06.03.14 13:58
leider lässt sich der link nicht öffnen^^
Delete - Do 06.03.14 14:00
CenBells hat folgendes geschrieben : |
leider lässt sich der link nicht öffnen^^ |
Sorry, hab's korrigiet, da ist mir wohl was dazwischen gerutscht :lol:
CenBells - Do 06.03.14 14:03
Ahso, ja, den Beitrag kenn ich.
Wie gesagt, die Anwendung funzt mit IBExpress gegen Firebird seit 12 Jahren :) Da mach ich zurzeit keine weitere Anstrengung alles auf FireDAC oder ähnliches umzustellen. :)
Gruß
Ken
Delete - Do 06.03.14 14:06
Wie gesagt, die Firebird-Unterstützung durch die IBX-Komponenten war bei älteren Delphi-Versionen selbstverständlich. Bei deiner Version unterstützt IBX den Zugriff auf Firebird nicht mehr. Dazu sind die Firedac-Komponenten jetzt da. Der Aufwand, den du mit deinen Versuchen betreibst, ist um ein Vielfaches höher als der Aufwand wäre, die Komponenten zu tauschen. Aber du weißt ja: Ein Mann muß tun, was ein Mann tun muß :twisted:
Lemmy - Do 06.03.14 15:13
Hallo,
Perlsau hat folgendes geschrieben : |
Wie gesagt, die Firebird-Unterstützung durch die IBX-Komponenten war bei älteren Delphi-Versionen selbstverständlich. |
Definitiv NEIN! Jeff Overcash hat von Anfang an klar gestellt, dass die IBX nie gegen Firebird getestet werden und es keine offizielle Unterstützung gibt. Wenn eine Kombination aus Delphiversion, IBX-Version und Firebird funktioniert hat, dann war das schlicht und ergreifend Glück. Und dass es 12 Jahre lang funktioniert hat, heißt dennoch nicht, dass es unterstützt wird!
Wer es nicht glauben mag:
http://www.delphigroups.info/2/2/369805.html vorletzter Post:
Zitat: |
They are with any version of IB from IB 5.5 and up. They are neither tested
against nor support any version of FireBird. |
Danke für die Aufmerksamkeit...
Delete - Do 06.03.14 16:57
Da hab ich wohl einen Bock geschossen: Mir war die FB-Unterstützung damals selbstverständlich. Hab Dank für die Aufklärung :wave:
Lemmy - Do 06.03.14 18:33
Perlsau hat folgendes geschrieben : |
Da hab ich wohl einen Bock geschossen: Mir war die FB-Unterstützung damals selbstverständlich. Hab Dank für die Aufklärung :wave: |
passt schon - das wissen leider nur wenige...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!