Einzelnen Beitrag anzeigen

Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#14

AW: XE2: gzip-Datei mittels System.ZLib dekomprimieren

  Alt 30. Dez 2011, 16:55
Bearbeite deinen Instream nach dem Laden mal so:
Delphi-Quellcode:
var
  AByteArray : PByteArray;
  i : Integer;
begin
  // gz header/footer replacement
  AByteArray := InStream.Memory;
  i := 10;
  while AByteArray[i] <> 0 do
    inc(i);
  AByteArray[i - 1] := $78;
  AByteArray[i] := $9C;
  InStream.Position := i - 1;
  InStream.Size := InStream.Size -8;
- Sucht das Header Ende (10 Byte Header + #0 terminated Filename)
- Setzt den Delphi 2 Byte Header
- Size -8 um 32bit CRC abzuschneiden
- Position auf Anfang des neuen Header

Bei mir geht es so. Mit einem kleinen Textfile (als gz via 7zip). Ist natürlich nicht fehlertolerant, nur zum Testen.

PS: Ich verwende TDecompressionStream etwas anders, ich hoffe Deine Variante ignoriert nicht InStream.Position.

Geändert von Satty67 (30. Dez 2011 um 17:03 Uhr)
  Mit Zitat antworten Zitat