Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Decompress GZ Dateien (https://www.delphipraxis.net/204955-decompress-gz-dateien.html)

DavidKlimas 17. Jul 2020 06:00

Decompress GZ Dateien
 
Hallo,

ich habe mehrere *.gz dateien auf meinem PC und versuche diese zu entpacken. Ich hab mal eine Beispieldatei hochgeladen: test.mon-info.eu/adult.mon-info.eu-ssl_log-Jul-2020.gz

Leider hat die entpackte *.txt datei nur 570 einträge, die orginale GZ hat über 11 000. Wie kann man das beheben ?

Delphi-Quellcode:
var
  LInput, LOutput: TFileStream;
  LUnZip: TZDecompressionStream;
Delphi-Quellcode:
LInput := TFileStream.Create('C:\Exemple.gz', fmOpenRead);
    LOutput := TFileStream.Create('C:\Exemple.txt', fmCreate);
    LInput.Seek(0, soBeginning);
    LUnZip := TZDecompressionStream.Create(LInput, 15+16);
    LOutput.CopyFrom(LUnZip, LUnZip.Size);
    LUnZip.Free;
    LInput.Free;
    LOutput.Free;
Danke für Eure Hilfe

philipp.hofmann 17. Jul 2020 07:24

AW: Decompress GZ Dateien
 
Ich habe es jetzt nicht ausprobiert, aber mein Code sieht leicht anders aus und das Kommentar zu "15+32" sieht auch danach aus, als ob es bei mir nötig gewesen wäre:

Delphi-Quellcode:
class function TStringUtils.gzUnzip(filename:String):TStringList;
var
   LInput:TFileStream;
   LUnZip:TZDecompressionStream;
begin
   Result:=TStringList.Create(true);
   LInput:=TFileStream.Create(filename,fmOpenRead + fmShareDenyNone);
   LUnZip:=TZDecompressionStream.Create(LInput,15+32); // '15+32' macht den Unterschied zwischen data-error und 'juhu'
   Result.LoadFromStream(LUnzip);
   LUnZip.Free;
   LInput.Free;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz