0
私は利用可能なリソースのすべてを調べて、これを見つけることができました:
procedure ZDecompress(const inBuffer: Pointer; inSize: Integer;
out outBuffer: Pointer; out outSize: Integer; outEstimate: Integer);
var
zstream: TZStreamRec;
delta: Integer;
begin
FillChar(zstream, SizeOf(TZStreamRec), 0);
delta := (inSize + 255) and not 255;
if outEstimate = 0 then outSize := delta
else outSize := outEstimate;
GetMem(outBuffer, outSize);
try
zstream.next_in := inBuffer;
zstream.avail_in := inSize;
zstream.next_out := outBuffer;
zstream.avail_out := outSize;
ZDecompressCheck(InflateInit(zstream));
try
while ZDecompressCheck(inflate(zstream, Z_NO_FLUSH)) <> Z_STREAM_END do
begin
Inc(outSize, delta);
ReallocMem(outBuffer, outSize);
zstream.next_out := PChar(Integer(outBuffer) + zstream.total_out);
zstream.avail_out := delta;
end;
finally
ZDecompressCheck(inflateEnd(zstream));
end;
ReallocMem(outBuffer, zstream.total_out);
outSize := zstream.total_out;
except
FreeMem(outBuffer);
raise;
end;
end;
この手順はインフレのためのものとします。任意の提案コード&あなたは同じ目的のためのマスターで???
TCompressionStream/TDecompressionStreamではなく、これらの手順を使用する特別な理由はありますか?彼らは仕事がはるかに簡単です。 –
私はちょうど膨張/収縮の手順を学びたいと思う...もしTCompressionStream/TDecompressionStreamが作業を行うことができれば、私はあまりにもそれに満足している^ _^ – Zenith
この質問は[ヘルプ]。 websearchを使用する必要があります。 –