压缩和解压函数的问题
var
filename:string;
bt:TBytes;
begin
filename:='丰碑';
SetLength(bt,12); //'丰碑'压缩后的TBytes
bt[0]:=120;
bt[1]:=1;
bt[2]:=51;
bt[3]:=240;
bt[4]:=155;
bt[5]:=88;
bt[6]:=1;
bt[7]:=0;
bt[8]:=3;
bt[9]:=72;
bt[10]:=1;
bt[11]:=136;
//bt:=ZCompressStr(filename, zcFastest); //压缩
ShowMessage(ZDecompressStr(bt)); //解压
end;
function TDecompressionStream.Read(var Buffer; Count: Longint): Longint;
var
current,remain: LongInt;
begin
FZRec.next_out := @Buffer;
FZRec.avail_out := Count;
if FStrm.Position <> FStrmPos then FStrm.Position := FStrmPos;
remain := 0;
while (FZRec.avail_out > 0) do
begin
current := FZRec.avail_in;
if FZRec.avail_in = remain then
begin
FZRec.avail_in := FStrm.Read(FBuffer, sizeof(FBuffer));
if FZRec.avail_in = remain then
begin
Result := Count - FZRec.avail_out;
Exit;
end;
FZRec.next_in := FBuffer;
FStrmPos := FStrm.Position;
Progress(Self);
end;
CCheck(inflate(FZRec, 0));
if current = FZRec.avail_in then remain := current;
end;
Result := Count;
end;