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?