Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   zlibex exception beim entpacken (https://www.delphipraxis.net/168956-zlibex-exception-beim-entpacken.html)

ulilüding 20. Jun 2012 13:27

zlibex exception beim entpacken
 
Hi Leute,

ich möchte gerne eine GZIP gepackte Datei (von einem Java-Programm (minecraft) erzeugt) entpacken. Die kleine Bastelarbeit sieht derzeit so aus:

(Eigentlicher Dienstleister:)

function TForm1.entGZip(const gzin: TStream): string;
var
dcStr: TZDecompressionStream;
buf: array[0..1000] of char;
cntr: integer;
begin
dcStr:= TZDecompressionStream.Create(gzin);
repeat
cntr:= dcStr.read(buf, 1000);
result:= result + buf;
until cntr < 1000;
dcStr.free
end;

(Aufruf in einer procedure:)

fils:=TFileStream.create(src, fmOpenRead);
mem.text:=entGZip(fils);
fils.free

Die ZLibEx wir dafür benutzt. Die wirft dann die Exception:

raise EZDecompressionError.Create(code);

mit der Nachricht "data error" (toller Informationsgehalt). Scheint eine größere Angelegenheit zu sein, denn das Fehlerfenster von Delphi ist zickig (wird beim Verschieben nicht korrekt neu gezeichnet resp. der alte Inhalt bleibt bestehen). Hat einer eine Idee, warum?

Danke, LG Uli

matashen 20. Jun 2012 13:47

AW: zlibex exception beim entpacken
 
mit welcher Delphi Version

muss das array of char nicht ansichar sein?

buf: array[0..1000] of char;
buf: array[0..1000] of ansichar;

ulilüding 21. Jun 2012 10:31

AW: zlibex exception beim entpacken
 
sorry für meine Schlampigkeit: Delphi 5
daher sollte char auch gehen - hab's gerade mit ansichar gechecked: gleicher Fehler. Danke dennoch
LGU

gammatester 21. Jun 2012 11:41

AW: zlibex exception beim entpacken
 
zlib ist nicht gzip. Bei neueren Delphis scheint's ja eine Unit ZLibExGZ zu geben. Hilft Dir mit Delphi 5 der Hinweis mit den zwei Bytes aus diesem alten Beitrag weiter http://www.delphipraxis.net/1103831-post2.html?

ulilüding 23. Jun 2012 13:08

AW: zlibex exception beim entpacken
 
Hab' dem komprimierten stream "fils" die beiden bytes $78 und $9C vorangestellt (der stream ist damm 2 byte größer), dann entGZip aufgerufen und diesen verlängerten stream übergeben, aber der Fehler bleibt. Trotzdem habe ich das "Bauchgefühl", daß die Richtung nicht schlecht ist. Momentan steht im Byte an position 0 der hexadezimalwert $78, an der 1 die $9C, ab der position 2 folgt der originäre stream. Stimmt DA vielleicht was nicht? oder irgendeine checksumme?

LGU


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 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