Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Problem beim Dekomprimieren mit TZDecompressionStream (https://www.delphipraxis.net/161759-problem-beim-dekomprimieren-mit-tzdecompressionstream.html)

blackfin 19. Jul 2011 22:15

AW: Problem beim Dekomprimieren mit TZDecompressionStream
 
Ok, habs nun gesehen. Wie sagt man....es freut mich, wenn geholfen werden konnte :-)

s.h.a.r.k 19. Jul 2011 22:36

AW: Problem beim Dekomprimieren mit TZDecompressionStream
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von blackfin (Beitrag 1112639)
Ok, habs nun gesehen. Wie sagt man....es freut mich, wenn geholfen werden konnte :-)

Bin auch sehr dankbar dafür :thumb: Schon viel zu lange vor dem Problem gesessen und über Tante Google nicht so wirklich was dazu gefunden gehabt.

Strange, jetzt klappts auch mit dem Puffer :shock: Hatte vorher wohl irgendwo anders einen Fehler... Wäre jetzt nur zu interessant wo genau der denn war... Anbei jedenfalls mal eine funktionierende Demo.

-- EDIT: Projekt aktualisiert. Nun ists hoffentlich richtig :stupid:

Tags: TFileStream, TZCompressionStream, TZDecompressionStream, TWriter, TReader.

s.h.a.r.k 20. Jul 2011 02:19

AW: Problem beim Dekomprimieren mit TZDecompressionStream
 
Ohwei, ohwei... mein Projekt war totaler Käse, werde es jetzt dann gleich aktualisieren :wall: Jetzt habe ich auch langsam kapiert, was du mit einem nicht-dekomprimierbaren Block gemeint hast. Ich habe ja lauter komprimierter Blöcke geschrieben und nicht einen ganzen zusammenhängenden, daher hat das auslesen nie so recht geklappt.

Daher funktioniert CopyFrom auch leider nicht, zumindest nicht, wenn ich den Parameter Count = 0 setze. Dies hat den Grund, dass ich ja einen FileStream zugrunde gelegt habe und wenn ich ein CopyFrom(..., 0) tätige wird die Position im FileStream immer auf 0 gesetzt, was ich ja nicht will, da ich ja Block für Block lesen will.

Noch eine Info am Rande: CopyForm nutzt intern auch einen Buffer. Warum sollte es eigentlich böse sein, wenn ich sowas dann auch nutze? :gruebel:

Zudem kommt noch dieser Zustand zum tragen:
Zitat:

Zitat von Dephi Hilfe
Wenn Sie versuchen, in den Stream zu schreiben, die Stream-Größe abzurufen oder mit Seek den Stream rückwärts zu durchsuchen, wird eine Exception ausgelöst.

Somit bleibt mir eigentlich nur noch der Weg über einen Buffer zu gehen, siehe den Code im aktualisierten Demo-Projekt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:20 Uhr.
Seite 2 von 2     12   

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