Rozpakowanie pliku

0

Wątek plików był niedawno poruszany, ale temat bardziej skomplikowany. Ja mam bardziej banalny.

Ma pliczek spakowany i chę go rozpakować i wczytać, przejrzałem bibliotekę ZLib i jest tam obiekt TDecompressStream.

Aby rozpakować robię dwa FileStreamy i jeden do odczytu drugi do zapisu.
Robię Create z podaniem jako parametru tego Streama do odczytu.
No i na Read do bufora się wywala.

Ktoś ma doświadczenia ?

Kris

0

Tak się składa, że ostatnio troszkę się bawiłem ZLIB-em.
Rzeczywiście jest on nieco pokręcony, ale w końcu udało mi się napisać mały modulik do kompresji i dekompresji plików.
Kod źródłowy tego modułu jest dostępny tutaj: http://strony.wp.pl/wp/jack_1024/delphi/zlib/zlibcompr.html.

0

Skopiowałem w całości wersję dla D5 bo używam D7. Niestety wywala mi ten sam błąd: Exception o wiele mówiącej nazwie 'Error'.

Jak debaguje to błąd pojawia się w tym samym miejscu co poprzednio, czyli przy wołaniu Read tego obiektu.

Może mam za 'nowego' zipa czy coś (8.0) ? Poszukam jeszcze w necie może jest nowsza wersja ZLib.

Kris

[<font color="blue">post2</span>]
Znalazłem niby nowszą wersję 1.1.4 zmodyfikowałem Twój unit aby korzystał z tego nowgo i nadal nie łyka, tym razem można debugerem dojść, że to błąd o tajemniczym numerze -3 oznaczonym jako data error. ;-(

Kris

0

U mnie na Delphi 5 Ent. wszystko jest OK.
Używam ZLIB-a 1.1.4 (chociaż w Zlib.pas istnieje zapis zlib_Version = '1.1.3'), którego ściągnąłem jakiś tydzień temu.
Źródła ZLIB-a kompilowałem w C++ Builder 6. Pliki OBJ (wynik kompilacji) przeniosłem do katalogu %Delphi%\Source\ZLIB, a moduł zlib.pas zostawiłem stary (z nowym były jakieś problemy).
Ale wcześniej korzystałem ze ZLIB-a dostarczanego razem z Delphi 5 i nie było żadnych problemów.
Napisałem malutki programik do kompresji i dekompresji plików korzystający z mojego modułu. Jeśli to Ci w czymś pomoże, zajrzyj na stronę http://strony.wp.pl/wp/jack_1024/delphi/zlib/zlib.html. Tam znajduje się kod źródłowy i wersja skompilowana tego programu, pliki OBJ i moduł ZlibCompr.

0

Niestety nie działa, więc chyba jedyne rozwiązanie to takie, że nie czyta akurat tego formatu zip jaki posiadam.

Może ja popełniam jeden zasadniczy błąd, że próbuje rozkompresować coś spakowane czymś innym, może ZLib rozpakowuje to co sam spakował ?

Komunikat na to wskazuje, że nie jest to "ZLIB compressed file"

W każdym razie dzięki za pomoc.

Kris

0

A to Ty chciałeś rozpakować ZLIB-em plik skompresowany (Win)ZIP-em ?
To trzeba to zrobić nieco inaczej.
Do plików ZIP też jest dodawany jakiś nagłówek (oczywiście inny niż mój TZlibHeader).
W nagłówku tym musi być informacja, gdzie w pliku ZIP znajdują się skompresowane dane i ich rozmiar.
Wówczas należałoby wydobyć te dane i je dekompresować.
Opis formatu ZIP (PKWARE) można znaleźć tutaj: http://www.wotsit.org/search.asp?s=zip.

1 użytkowników online, w tym zalogowanych: 0, gości: 1