亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? zlib.pas

?? Evc編的一個在wince5.0上運行的flash播放器
?? PAS
?? 第 1 頁 / 共 2 頁
字號:

function zlibCheck(code: Integer): Integer;
begin
  Result := code;
  if code < 0 then
    raise EZlibError.Create('error');    //!!
end;

function CCheck(code: Integer): Integer;
begin
  Result := code;
  if code < 0 then
    raise ECompressionError.Create('error'); //!!
end;

function DCheck(code: Integer): Integer;
begin
  Result := code;
  if code < 0 then
    raise EDecompressionError.Create('error');  //!!
end;

procedure CompressBuf(const InBuf: Pointer; InBytes: Integer;
                      out OutBuf: Pointer; out OutBytes: Integer);
var
  strm: TZStreamRec;
  P: Pointer;
begin
  FillChar(strm, sizeof(strm), 0);
  OutBytes := ((InBytes + (InBytes div 10) + 12) + 255) and not 255;
  GetMem(OutBuf, OutBytes);
  try
    strm.next_in := InBuf;
    strm.avail_in := InBytes;
    strm.next_out := OutBuf;
    strm.avail_out := OutBytes;
    CCheck(deflateInit_(strm, Z_BEST_COMPRESSION, zlib_version, sizeof(strm)));
    try
      while CCheck(deflate(strm, Z_FINISH)) <> Z_STREAM_END do
      begin
        P := OutBuf;
        Inc(OutBytes, 256);
        ReallocMem(OutBuf, OutBytes);
        strm.next_out := PChar(Integer(OutBuf) + (Integer(strm.next_out) - Integer(P)));
        strm.avail_out := 256;
      end;
    finally
      CCheck(deflateEnd(strm));
    end;
    ReallocMem(OutBuf, strm.total_out);
    OutBytes := strm.total_out;
  except
    FreeMem(OutBuf);
    raise
  end;
end;


procedure DecompressBuf(const InBuf: Pointer; InBytes: Integer;
  OutEstimate: Integer; out OutBuf: Pointer; out OutBytes: Integer);
var
  strm: TZStreamRec;
  P: Pointer;
  BufInc: Integer;
begin
  FillChar(strm, sizeof(strm), 0);
  BufInc := (InBytes + 255) and not 255;
  if OutEstimate = 0 then
    OutBytes := BufInc
  else
    OutBytes := OutEstimate;
  GetMem(OutBuf, OutBytes);
  try
    strm.next_in := InBuf;
    strm.avail_in := InBytes;
    strm.next_out := OutBuf;
    strm.avail_out := OutBytes;
    DCheck(inflateInit_(strm, zlib_version, sizeof(strm)));
    try
      while DCheck(inflate(strm, Z_FINISH)) <> Z_STREAM_END do
      begin
        P := OutBuf;
        Inc(OutBytes, BufInc);
        ReallocMem(OutBuf, OutBytes);
        strm.next_out := PChar(Integer(OutBuf) + (Integer(strm.next_out) - Integer(P)));
        strm.avail_out := BufInc;
      end;
    finally
      DCheck(inflateEnd(strm));
    end;
    ReallocMem(OutBuf, strm.total_out);
    OutBytes := strm.total_out;
  except
    FreeMem(OutBuf);
    raise
  end;
end;


// TCustomZlibStream

constructor TCustomZLibStream.Create(Strm: TStream);
begin
  inherited Create;
  FStrm := Strm;
  FStrmPos := Strm.Position;
end;

procedure TCustomZLibStream.Progress(Sender: TObject);
begin
  if Assigned(FOnProgress) then FOnProgress(Sender);
end;


// TCompressionStream

constructor TCompressionStream.Create(CompressionLevel: TCompressionLevel;
  Dest: TStream);
const
  Levels: array [TCompressionLevel] of ShortInt =
    (Z_NO_COMPRESSION, Z_BEST_SPEED, Z_DEFAULT_COMPRESSION, Z_BEST_COMPRESSION);
begin
  inherited Create(Dest);
  FZRec.next_out := FBuffer;
  FZRec.avail_out := sizeof(FBuffer);
  CCheck(deflateInit_(FZRec, Levels[CompressionLevel], zlib_version, sizeof(FZRec)));
end;

destructor TCompressionStream.Destroy;
begin
  FZRec.next_in := nil;
  FZRec.avail_in := 0;
  try
    if FStrm.Position <> FStrmPos then FStrm.Position := FStrmPos;
    while (CCheck(deflate(FZRec, Z_FINISH)) <> Z_STREAM_END)
      and (FZRec.avail_out = 0) do
    begin
      FStrm.WriteBuffer(FBuffer, sizeof(FBuffer));
      FZRec.next_out := FBuffer;
      FZRec.avail_out := sizeof(FBuffer);
    end;
    if FZRec.avail_out < sizeof(FBuffer) then
      FStrm.WriteBuffer(FBuffer, sizeof(FBuffer) - FZRec.avail_out);
  finally
    deflateEnd(FZRec);
  end;
  inherited Destroy;
end;

function TCompressionStream.Read(var Buffer; Count: Longint): Longint;
begin
  raise ECompressionError.Create('Invalid stream operation');
end;

function TCompressionStream.Write(const Buffer; Count: Longint): Longint;
begin
  FZRec.next_in := @Buffer;
  FZRec.avail_in := Count;
  if FStrm.Position <> FStrmPos then FStrm.Position := FStrmPos;
  while (FZRec.avail_in > 0) do
  begin
    CCheck(deflate(FZRec, 0));
    if FZRec.avail_out = 0 then
    begin
      FStrm.WriteBuffer(FBuffer, sizeof(FBuffer));
      FZRec.next_out := FBuffer;
      FZRec.avail_out := sizeof(FBuffer);
      FStrmPos := FStrm.Position;
      Progress(Self);
    end;
  end;
  Result := Count;
end;

function TCompressionStream.Seek(Offset: Longint; Origin: Word): Longint;
begin
  if (Offset = 0) and (Origin = soFromCurrent) then
    Result := FZRec.total_in
  else
    raise ECompressionError.Create('Invalid stream operation');
end;

function TCompressionStream.GetCompressionRate: Single;
begin
  if FZRec.total_in = 0 then
    Result := 0
  else
    Result := (1.0 - (FZRec.total_out / FZRec.total_in)) * 100.0;
end;


// TDecompressionStream

constructor TDecompressionStream.Create(Source: TStream);
begin
  inherited Create(Source);
  FZRec.next_in := FBuffer;
  FZRec.avail_in := 0;
  DCheck(inflateInit_(FZRec, zlib_version, sizeof(FZRec)));
end;

destructor TDecompressionStream.Destroy;
begin
  inflateEnd(FZRec);
  inherited Destroy;
end;

function TDecompressionStream.Read(var Buffer; Count: Longint): Longint;
begin
  FZRec.next_out := @Buffer;
  FZRec.avail_out := Count;
  if FStrm.Position <> FStrmPos then FStrm.Position := FStrmPos;
  while (FZRec.avail_out > 0) do
  begin
    if FZRec.avail_in = 0 then
    begin
      FZRec.avail_in := FStrm.Read(FBuffer, sizeof(FBuffer));
      if FZRec.avail_in = 0 then
        begin
          Result := Count - FZRec.avail_out;
          Exit;
        end;
      FZRec.next_in := FBuffer;
      FStrmPos := FStrm.Position;
      Progress(Self);
    end;
    DCheck(inflate(FZRec, 0));
  end;
  Result := Count;
end;

function TDecompressionStream.Write(const Buffer; Count: Longint): Longint;
begin
  raise EDecompressionError.Create('Invalid stream operation');
end;

function TDecompressionStream.Seek(Offset: Longint; Origin: Word): Longint;
var
  I: Integer;
  Buf: array [0..4095] of Char;
begin
  if (Offset = 0) and (Origin = soFromBeginning) then
  begin
    DCheck(inflateReset(FZRec));
    FZRec.next_in := FBuffer;
    FZRec.avail_in := 0;
    FStrm.Position := 0;
    FStrmPos := 0;
  end
  else if ( (Offset >= 0) and (Origin = soFromCurrent)) or
          ( ((Offset - FZRec.total_out) > 0) and (Origin = soFromBeginning)) then
  begin
    if Origin = soFromBeginning then Dec(Offset, FZRec.total_out);
    if Offset > 0 then
    begin
      for I := 1 to Offset div sizeof(Buf) do
        ReadBuffer(Buf, sizeof(Buf));
      ReadBuffer(Buf, Offset mod sizeof(Buf));
    end;
  end
  else
    raise EDecompressionError.Create('Invalid stream operation');
  Result := FZRec.total_out;
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品国产一区二区精华液 | 91精品福利在线一区二区三区 | 一区二区三区欧美日| 中文一区在线播放| 国产欧美一区二区精品久导航| 精品少妇一区二区| 欧美一区二区三区成人| 欧美一区二视频| 日韩精品影音先锋| 久久久久久免费网| 中文字幕第一区| 亚洲美女一区二区三区| 一区二区三区中文在线| 性感美女极品91精品| 视频一区视频二区中文字幕| 美女视频第一区二区三区免费观看网站| 日韩国产精品久久久久久亚洲| 麻豆精品精品国产自在97香蕉| 韩国av一区二区三区在线观看| 懂色av一区二区三区蜜臀| 91年精品国产| 欧美一区二区三区成人| 国产网站一区二区| 一区二区免费看| 美女一区二区久久| 成人黄色电影在线| 欧美精品v国产精品v日韩精品| 精品国产不卡一区二区三区| 亚洲日本一区二区| 另类小说视频一区二区| 粉嫩av一区二区三区粉嫩| 欧美影视一区二区三区| 久久亚洲一区二区三区四区| 亚洲人成亚洲人成在线观看图片| 三级一区在线视频先锋| 粉嫩aⅴ一区二区三区四区| 在线免费av一区| 亚洲精品在线免费播放| 艳妇臀荡乳欲伦亚洲一区| 狠狠色丁香久久婷婷综合_中| av不卡一区二区三区| 欧美r级电影在线观看| 亚洲免费电影在线| 国产aⅴ精品一区二区三区色成熟| 91福利在线播放| 日本一区二区免费在线| 亚洲777理论| 91麻豆精东视频| 国产亚洲一本大道中文在线| 日韩电影在线免费| 色婷婷精品久久二区二区蜜臀av| 久久综合色之久久综合| 日韩二区三区四区| 欧美亚一区二区| 中文字幕在线不卡| 国产v综合v亚洲欧| 欧美成人官网二区| 午夜精品久久久| 色狠狠av一区二区三区| 中文字幕免费不卡在线| 九九**精品视频免费播放| 在线成人av网站| 亚洲国产精品视频| 成人av资源下载| 国产精品福利一区| 成人午夜av电影| 亚洲国产激情av| 成人中文字幕合集| 国产亚洲精品福利| 国产精品1区二区.| 国产亚洲综合av| 激情久久五月天| 久久久久久久久久久久电影 | 成人91在线观看| 国产精品你懂的在线| 国产精品亚洲成人| 国产区在线观看成人精品 | 老司机午夜精品| 日韩欧美资源站| 韩国一区二区三区| 久久久久国产精品免费免费搜索| 国产一区二区三区国产| 精品日韩在线一区| 成人性生交大片免费看中文 | 99久久国产综合精品色伊| 国产精品国产成人国产三级| 99久久久久久99| 亚洲一区二区av电影| 欧美日韩在线三级| 青青国产91久久久久久| www国产成人免费观看视频 深夜成人网| 蜜桃一区二区三区在线| 国产亚洲精久久久久久| 99v久久综合狠狠综合久久| 亚洲宅男天堂在线观看无病毒| 91 com成人网| 国产精品一区二区不卡| 亚洲精品欧美专区| 欧美一区日韩一区| 成人自拍视频在线观看| 亚洲一区二区视频在线| 欧美v日韩v国产v| 国产高清一区日本| 夜夜夜精品看看| 欧美变态凌虐bdsm| 色婷婷激情综合| 九九热在线视频观看这里只有精品| 日本一区二区视频在线观看| 精品视频色一区| 国产在线视频一区二区| 一区二区三区在线视频观看 | 欧美丝袜自拍制服另类| 精品无人区卡一卡二卡三乱码免费卡| 中文字幕乱码日本亚洲一区二区| 日本二三区不卡| 久久99精品国产麻豆婷婷 | 欧美一区二区三区的| av午夜一区麻豆| 蜜桃av噜噜一区| 亚洲精品日产精品乱码不卡| 久久久久久日产精品| 欧美日韩一区视频| 成人午夜激情在线| 久久精品国产免费看久久精品| 自拍偷拍国产精品| 久久久av毛片精品| 91精品国产日韩91久久久久久| av在线不卡电影| 国产成人自拍网| 久久精品国产色蜜蜜麻豆| 亚洲午夜电影在线| 亚洲视频一区在线| 中文字幕av一区二区三区高| 日韩免费一区二区三区在线播放| 在线观看一区二区精品视频| 99综合电影在线视频| 国产乱淫av一区二区三区| 麻豆91免费看| 日韩成人免费电影| 天使萌一区二区三区免费观看| 亚洲三级久久久| 亚洲人精品午夜| 亚洲欧洲制服丝袜| 国产精品毛片a∨一区二区三区| 久久综合久久99| 久久久综合激的五月天| 日韩三级视频在线观看| 欧美一区二区三区播放老司机| 欧美久久久久久久久| 91国偷自产一区二区开放时间 | 91麻豆自制传媒国产之光| aa级大片欧美| 91一区二区在线| 色域天天综合网| 在线观看亚洲精品| 欧美日韩综合在线免费观看| 欧美日韩成人在线| 欧美日本一区二区三区| 6080yy午夜一二三区久久| 欧美精选午夜久久久乱码6080| 欧美性视频一区二区三区| 欧美日韩久久一区二区| 91麻豆精品国产自产在线观看一区| 欧美猛男男办公室激情| 日韩三区在线观看| 久久精品夜色噜噜亚洲aⅴ| 欧美—级在线免费片| 国产精品美女久久久久高潮 | 91精品免费观看| 日韩欧美中文字幕制服| 久久在线观看免费| 最近日韩中文字幕| 午夜欧美2019年伦理| 精品一区二区精品| 成人福利视频在线看| 在线日韩av片| 欧美成人免费网站| 中文字幕日韩一区二区| 亚洲第一主播视频| 国模一区二区三区白浆| 99精品国产热久久91蜜凸| 欧美三区在线视频| 久久精品水蜜桃av综合天堂| 亚洲视频一二区| 蜜臀av一级做a爰片久久| www.欧美日韩| 欧美一级片在线看| 最新热久久免费视频| 视频一区二区不卡| 9色porny自拍视频一区二区| 在线电影欧美成精品| 国产精品福利影院| 理论片日本一区| 91国偷自产一区二区三区观看| 精品久久久久久久久久久院品网| 综合久久给合久久狠狠狠97色 | 美腿丝袜一区二区三区| 99视频精品在线| 久久综合久久综合久久| 亚洲成人精品一区|