Autor Beitrag
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Mi 05.03.14 17:59 
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

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 05.03.14 19:47 
Mit welchem Zeichensatz wurde das Blobfeld angelegt?
CenBells Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Mi 05.03.14 20:31 
Hallo,

das feld wurde mit iso_8859-1 angelegt. Die Verbing nutzt das auch.

Gruss
Ken

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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?

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: 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

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: Do 06.03.14 10:20 
compaspascal.blogspo...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 ein.
CenBells Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: 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

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 06.03.14 13:39 
IBX ist meinen neuesten Recherchen zufolge definitiv nicht geeignet, um auf eine Firebird-Datenbank zuzugreifen, auch nicht bei den neuesten Delphi-Versionen. Hier z.B. kommt das sehr deutlich zum Ausdruck.


Zuletzt bearbeitet von Perlsau am Do 06.03.14 13:59, insgesamt 1-mal bearbeitet
CenBells Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Do 06.03.14 13:58 
leider lässt sich der link nicht öffnen^^

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 06.03.14 14:00 
user profile iconCenBells hat folgendes geschrieben Zum zitierten Posting springen:
leider lässt sich der link nicht öffnen^^


Sorry, hab's korrigiet, da ist mir wohl was dazwischen gerutscht :lol:
CenBells Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: 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

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: Do 06.03.14 15:13 
Hallo,

user profile iconPerlsau hat folgendes geschrieben Zum zitierten Posting springen:
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:
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...
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: Do 06.03.14 18:33 
user profile iconPerlsau hat folgendes geschrieben Zum zitierten Posting springen:
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...