| Autor | Beitrag | 
| CenBells 
          Beiträge: 1547
 
 Win 7
 Delphi XE5 Pro
 
 | 
Verfasst: Mi 05.03.14 16: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
 
 
 
 
 | 
Verfasst: Mi 05.03.14 18:47 
 
Mit welchem Zeichensatz wurde das Blobfeld angelegt? | 
|  | 
| CenBells  
          Beiträge: 1547
 
 Win 7
 Delphi XE5 Pro
 
 | 
Verfasst: Mi 05.03.14 19: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
 
 
 
 
 | 
Verfasst: Mi 05.03.14 19: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:
 
 | VarMyString : 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  
          Beiträge: 1547
 
 Win 7
 Delphi XE5 Pro
 
 | 
Verfasst: Mi 05.03.14 22: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
 
 
 
 
 | 
Verfasst: Mi 05.03.14 22: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 
          Beiträge: 653
 Erhaltene Danke: 160
 
 
 
 
 | 
Verfasst: Do 06.03.14 09: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  
          Beiträge: 1547
 
 Win 7
 Delphi XE5 Pro
 
 | 
Verfasst: Do 06.03.14 10: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
 
 
 
 
 | 
Verfasst: Do 06.03.14 12: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 12:59, insgesamt 1-mal bearbeitet
 | 
|  | 
| CenBells  
          Beiträge: 1547
 
 Win 7
 Delphi XE5 Pro
 
 | 
Verfasst: Do 06.03.14 12: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
 
 
 
 
 | 
Verfasst: Do 06.03.14 13:00 
 | 
|  | 
| CenBells  
          Beiträge: 1547
 
 Win 7
 Delphi XE5 Pro
 
 | 
Verfasst: Do 06.03.14 13: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
 
 
 
 
 | 
Verfasst: Do 06.03.14 13: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ß    | 
|  | 
| Lemmy 
          Beiträge: 792
 Erhaltene Danke: 49
 
 Windows 7 / 10; CentOS 7; LinuxMint
 Delphi 7-XE10.1, VS 2015
 
 | 
Verfasst: Do 06.03.14 14: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:
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
 
 
 
 
 | 
Verfasst: Do 06.03.14 15:57 
 
Da hab ich wohl einen Bock geschossen: Mir  war die FB-Unterstützung damals selbstverständlich. Hab Dank für die Aufklärung    | 
|  | 
| Lemmy 
          Beiträge: 792
 Erhaltene Danke: 49
 
 Windows 7 / 10; CentOS 7; LinuxMint
 Delphi 7-XE10.1, VS 2015
 
 | 
Verfasst: Do 06.03.14 17:33 
 | 
|  |