Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Problem: Mit Zipmaster 1.7 gepacktes (Blob-)Datenbankfeld mit ZipMaster 1.9 entpacken (https://www.delphipraxis.net/165162-problem-mit-zipmaster-1-7-gepacktes-blob-datenbankfeld-mit-zipmaster-1-9-entpacken.html)

kretabiker 16. Dez 2011 14:14

Problem: Mit Zipmaster 1.7 gepacktes (Blob-)Datenbankfeld mit ZipMaster 1.9 entpacken
 
Hallo,

ich stelle gerade eine unserer Applikationen um von D2007 auf DXE. Eigentlich bin ich durch, aber beim Testen stoße ich nun an einer Stelle auf ein Problem...

In einer Firebird-Datenbanktabelle liegen längere Texte in einem BLOB-Field zip-komprimiert. Die Zips wurde mit ZipMaster 1.79 erzeugt; bis D2007 gab es auch keine Probleme beim Auslesen und Entpacken.

Unter DXE habe ich nun die Zipmaster-Version 1.90 installiert, da es nur die für DXE zu geben scheint. Jetzt habe ich das Problem, das beim Entpacken des Feldinhaltes Fehlermeldungen auftreten - irgendwas hat sich da anscheinend geändert und ich kapiere nicht, was.

Folgenden (stark vereinfachten) Code verwende ich:

Delphi-Quellcode:
 
var
  UnpackedStr: TStringList;
  PackedTitle := TMemoryStream;
  UnpackedTitle: TMemoryStream;
begin
  (...)
  UnpackedStr := TStringList.Create;
  PackedTitle := TMemoryStream.Create;

  qryDokumenteTitel.SaveToStream(PackedTitle);
  // Alternativ probiert: TBlobStream(qryDokument.FieldByName('Titel').SaveToStream(PackedTitle);

  UnpackedTitle := zmDocs.ExtractStreamToStream(PackedTitel, 65535); // hier kracht es dann

  UnpackedStr.LoadFromStream(UnpackedTitle);

  (...)
An der markierten Stelle kracht es dann mit der Fehlermeldung "Unknown error in List()funktion. Stream Lesefehler"

Entweder mache ich etwas komplett falsch, oder es hat sich was geändert, oder es gibt Inkompatibiltäten zwischen Zipmaster 1.79 und 1.90, oder...

Datenbank ist Firebird 2.0.6 (Win32), das fragliche Tabellenfeld ist als BLOB mit sub_type 0 definiert. Zugriff über IBDAC.

Hat jemand ne Idee/ähnliche Erfahrungen?

Viele Grüße

Udo "Kretabiker" Treichel

Bernhard Geyer 16. Dez 2011 14:39

AW: Problem: Mit Zipmaster 1.7 gepacktes (Blob-)Datenbankfeld mit ZipMaster 1.9 entpa
 
Ich würde erstmal probieren unter D2007 ZipMaster 1.9 zu verwenden und zu sehen was hier passiert.

Nachteule 16. Dez 2011 14:50

AW: Problem: Mit Zipmaster 1.7 gepacktes (Blob-)Datenbankfeld mit ZipMaster 1.9 entpa
 
Delphi-Quellcode:
 UnpackedTitle := zmDocs.ExtractStreamToStream(PackedTitel, 65535); // hier kracht es dann

müsste es nicht PackedTitle statt PackedTitel heissen?

kretabiker 16. Dez 2011 14:56

AW: Problem: Mit Zipmaster 1.7 gepacktes (Blob-)Datenbankfeld mit ZipMaster 1.9 entpa
 
@Bernhard: Das ist eine Idee, auf die ich auch hätte selber kommen können. Geh ich gleich mal dran...

@Nachteule: So isses, heißt natürlich PackedTitle - Tippfehler beim Übertragen und munteren Umformatieren für das Forum. DAS ist nicht das Fehlerproblem...

kretabiker 16. Dez 2011 15:51

AW: Problem: Mit Zipmaster 1.7 gepacktes (Blob-)Datenbankfeld mit ZipMaster 1.9 entpa
 
Soderle,

hab mir jetzt mal schnell ein Testprojekt unter D2007 zusammengebaut, und zwar für ZM1.79 und ZM1.9 sowohl für IBDAC als auch IBX.

Ergebnis:
- ZM 1.79: Sowohl bei IBX als auch IBDAC funktioniert das Auslesen des Tabellenfeldes und das Entzippen einwandfrei.
- ZM 1.90: Sowohl bei IBX als auch IBDAC tritt der genannte Fehler beim Entpacken auf.

Was tun, sprach Zeus?

Jetzt muss ich mal ein bisserl in den Sourcen von ZM herumdebuggen, was ZM1.79 bei Entpacken des Streams anders macht als ZM1.90.

Oder hat noch jemand eine andere Idee?

Udo

kretabiker 20. Dez 2011 08:39

AW: Problem: Mit Zipmaster 1.7 gepacktes (Blob-)Datenbankfeld mit ZipMaster 1.9 entpa
 
Hallo allerseits,

um dieses Thema zum Abschluss zu bringen: Nach einigem Suchen, Testen und der Kontaktaufname mit Russel Peters, einem der Maintainer für ZipMaster, hat sich herausgestellt, dass es tatsächlich ein Problem mit dem Auslesen von mit ZipMaster 179 erzeugten Archiven in ZipMaster 190 gibt bzw. gab; der Fehler lag in der DLL und trat nur auf, wenn sehr kurze Texte mit ZM179 gepackt wurden.

Russel hat mir heute eine neue DLL geschickt, die in meinen Tests funktioniert hat. Sicherlich wird er in bälde auch eine neue Version zum Download zur Verfügung stellen.

Viele Grüße

Udo "Kretabiker" Treichel


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 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-2025 by Thomas Breitkreuz