Buffer error Zlib

0

Mam problem z kompresją(?)/dekompresją za pomocą Zlib, mianowicie kompresja przebiega (wydaje mi się) bez problemu natomiast przy dekompresji pojawia się błąd "Buffer error". Oto procedury odpowiedzialne za kompresję:

procedure TACF.Compress(fn:string);
var
  FAF, FS: TFileStream;
  TM1: Tmemorystream;

begin
  FAF:=Tfilestream.Create(FAfilename,fmcreate);
  FS:=Tfilestream.Create(fn,fmopenread);
  TM1:=Tmemorystream.Create;
  faf.Seek(0,soBeginning);
  faf.Write(Head,sizeof(head));
  ZcompressStream(fs,tm1,zcDefault);
  tm1.Seek(0,sobeginning);
  faf.Seek(sizeof(head),sobeginning);
  faf.CopyFrom(tm1,tm1.Size);
  faf.free;
  tm1.Free;
  fs.Free;
end;

i dekompresję:

procedure TACF.Decompress(fn: string);
var
  FAF, FS: TFileStream;
  TM1: Tmemorystream;

begin
  FAF:=Tfilestream.Create(FAfilename,fmopenread);
  FS:=Tfilestream.Create(fn,fmcreate);
  fs.Seek(0,sobeginning);
  TM1:=Tmemorystream.Create;
  faf.Seek(sizeof(head),sobeginning);
  TM1.CopyFrom(faf,faf.Size-sizeof(head));
  ZdecompressStream(tm1,fs); // tu pojawia się błąd...
  faf.free;
  tm1.Free;
  fs.Free;
end;

Próbowałem zmieniać zcDefault, na zcMax itp. bez efektu.
Może ktoś zna przyczynę błędu przy dekompresji?

0

Rozwiązałem (???) problem używając klasy TZCompressionStream;

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