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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vs_compress.pas

?? KSDev.VirtualSream.v1.01.rar 虛擬文件系統,
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
                              dictionary : pBytef; 
                              dictLength : uInt) : int;

{
     Initializes the decompression dictionary from the given uncompressed byte
   sequence. This function must be called immediately after a call of inflate
   if this call returned Z_NEED_DICT. The dictionary chosen by the compressor
   can be determined from the Adler32 value returned by this call of
   inflate. The compressor and decompressor must use exactly the same
   dictionary (see deflateSetDictionary).

     inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
   parameter is invalid (such as NULL dictionary) or the stream state is
   inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
   expected one (incorrect Adler32 value). inflateSetDictionary does not
   perform any decompression: this will be done by subsequent calls of
   inflate().
}

function inflateSync(var z : z_stream) : int;

{
  Skips invalid compressed data until a full flush point (see above the
  description of deflate with Z_FULL_FLUSH) can be found, or until all
  available input is skipped. No output is provided.

    inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
  if no more input was provided, Z_DATA_ERROR if no flush point has been found,
  or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
  case, the application may save the current current value of total_in which
  indicates where valid compressed data was found. In the error case, the
  application may repeatedly call inflateSync, providing more input each time,
  until success or end of the input data.
}


function inflateSyncPoint(var z : z_stream) : int;

{ZKsInfTrees}
{ Maximum size of dynamic tree.  The maximum found in a long but non-
  exhaustive search was 1004 huft structures (850 for length/literals
  and 154 for distances, the latter actually the result of an
  exhaustive search).  The actual maximum is not known, but the
  value below is more than safe. }
const
  MANY = 1440;


{$ifdef DEBUG}
var
  inflate_hufts : uInt;
{$endif}

function inflate_trees_bits(
  var c : array of uIntf;  
  var bb : uIntf;          
  var tb : pinflate_huft;  { !ignore me! bits tree result }
  var hp : array of Inflate_huft;      { !ignore me!space for trees }
  var z : z_stream         { !ignore me!for messages }
    ) : int;

function inflate_trees_dynamic(
    nl : uInt;                    { !ignore me!number of literal/length codes }
    nd : uInt;                    { !ignore me!number of distance codes }
    var c : Array of uIntf;           { !ignore me!that many (total) code lengths }
    var bl : uIntf;               { !ignore me!literal desired/actual bit depth }
    var bd : uIntf;               { !ignore me!distance desired/actual bit depth }
var tl : pInflate_huft;           { !ignore me!literal/length tree result }
var td : pInflate_huft;           { !ignore me!distance tree result }
var hp : array of Inflate_huft;   { !ignore me!space for trees }
var z : z_stream                  { !ignore me!for messages }
     ) : int;

function inflate_trees_fixed (
    var bl : uInt;                { !ignore me!literal desired/actual bit depth }
    var bd : uInt;                { !ignore me!distance desired/actual bit depth }
    var tl : pInflate_huft;       { !ignore me!literal/length tree result }
    var td : pInflate_huft;       { !ignore me!distance tree result }
    var z : z_stream              { !ignore me!for memory allocation }
     ) : int;


{ZKsInfUtil}
{ copy as much as possible from the sliding window to the output area }
function inflate_flush(var s : inflate_blocks_state;
                       var z : z_stream;
                       r : int) : int;

{ And'ing with mask[n] masks the lower n bits }
const
  inflate_mask : array[0..17-1] of uInt = (
    $0000,
    $0001, $0003, $0007, $000f, $001f, $003f, $007f, $00ff,
    $01ff, $03ff, $07ff, $0fff, $1fff, $3fff, $7fff, $ffff);

{procedure GRABBITS(j : int);}
{procedure DUMPBITS(j : int);}
{procedure NEEDBITS(j : int);}


{ZKSTrees}
const
  LENGTH_CODES = 29;
  LITERALS = 256;
  L_CODES = (LITERALS+1+LENGTH_CODES);
  D_CODES = 30;
  BL_CODES = 19;
  HEAP_SIZE = (2*L_CODES+1);
  MAX_BITS = 15;

  INIT_STATE =  42;
  BUSY_STATE =  113;
  FINISH_STATE = 666;

type
  ct_data_ptr = ^ct_data;
  ct_data = record
    fc : record
      case byte of
      0:(freq : ush);       { frequency count }
      1:(code : ush);       { bit string }
    end;
    dl : record
      case byte of
      0:(dad : ush);        { father node in Huffman tree }
      1:(len : ush);        { length of bit string }
    end;
  end;

  ltree_type = array[0..HEAP_SIZE-1] of ct_data;    { literal and length tree }
  dtree_type = array[0..2*D_CODES+1-1] of ct_data;  { distance tree }
  htree_type = array[0..2*BL_CODES+1-1] of ct_data;  { Huffman tree for bit lengths }
  { generic tree type }
  tree_type = array[0..(MaxInt div SizeOf(ct_data))-1] of ct_data;

  tree_ptr = ^tree_type;
  ltree_ptr = ^ltree_type;
  dtree_ptr = ^dtree_type;
  htree_ptr = ^htree_type;


  static_tree_desc_ptr = ^static_tree_desc;
  static_tree_desc =
         record
    {const} static_tree : tree_ptr;     { static tree or NIL }
    {const} extra_bits : pzIntfArray;   { extra bits for each code or NIL }
            extra_base : int;           { base index for extra_bits }
            elems : int;                { max number of elements in the tree }
            max_length : int;           { max bit length for the codes }
          end;

  tree_desc_ptr = ^tree_desc;
  tree_desc = record
    dyn_tree : tree_ptr;    { the dynamic tree }
    max_code : int;            { largest code with non zero frequency }
    stat_desc : static_tree_desc_ptr; { the corresponding static tree }
  end;

  Pos = ush;
  Posf = Pos; {FAR}
  IPos = uInt;

  pPosf = ^Posf;

  zPosfArray = array[0..(MaxInt div SizeOf(Posf))-1] of Posf;
  pzPosfArray = ^zPosfArray;

  deflate_state_ptr = ^deflate_state;
  deflate_state = record
    strm : z_streamp;          { pointer back to this zlib stream }
    status : int;              { as the name implies }
    pending_buf : pzByteArray; { output still pending }
    pending_buf_size : ulg;    { size of pending_buf }
    pending_out : pBytef;      { next pending byte to output to the stream }
    pending : int;             { nb of bytes in the pending buffer }
    noheader : int;            { suppress zlib header and adler32 }
    data_type : Byte;          { UNKNOWN, BINARY or ASCII }
    method : Byte;             { STORED (for zip only) or DEFLATED }
    last_flush : int;          { value of flush param for previous deflate call }


    w_size : uInt;             { LZ77 window size (32K by default) }
    w_bits : uInt;             { log2(w_size)  (8..16) }
    w_mask : uInt;             { w_size - 1 }

    window : pzByteArray;
    window_size : ulg;

    prev : pzPosfArray;

    head : pzPosfArray;    { Heads of the hash chains or NIL. }

    ins_h : uInt;          { hash index of string to be inserted }
    hash_size : uInt;      { number of elements in hash table }
    hash_bits : uInt;      { log2(hash_size) }
    hash_mask : uInt;      { hash_size-1 }

    hash_shift : uInt;

    block_start : long;

    match_length : uInt;           { length of best match }
    prev_match : IPos;             { previous match }
    match_available : boolean;     { set if previous match exists }
    strstart : uInt;               { start of string to insert }
    match_start : uInt;            { start of matching string }
    lookahead : uInt;              { number of valid bytes ahead in window }

    prev_length : uInt;

    max_chain_length : uInt;

    level : int;    { compression level (1..9) }
    strategy : int; { favor or force Huffman coding}

    good_match : uInt;

    nice_match : int; { Stop searching when current match exceeds this }

    dyn_ltree : ltree_type;    { literal and length tree }
    dyn_dtree : dtree_type;  { distance tree }
    bl_tree : htree_type;   { Huffman tree for bit lengths }

    l_desc : tree_desc;                { desc. for literal tree }
    d_desc : tree_desc;                { desc. for distance tree }
    bl_desc : tree_desc;               { desc. for bit length tree }

    bl_count : array[0..MAX_BITS+1-1] of ush;

    heap : array[0..2*L_CODES+1-1] of int; { heap used to build the Huffman trees }
    heap_len : int;                   { number of elements in the heap }
    heap_max : int;                   { element of largest frequency }

    depth : array[0..2*L_CODES+1-1] of uch;

    l_buf : puchfArray;       { buffer for literals or lengths }

    lit_bufsize : uInt;

    last_lit : uInt;      { running index in l_buf }

    d_buf : pushfArray;

    opt_len : ulg;        { bit length of current block with optimal trees }
    static_len : ulg;     { bit length of current block with static trees }
    compressed_len : ulg; { total bit length of compressed file }
    matches : uInt;       { number of string matches in current block }
    last_eob_len : int;   { bit length of EOB code for last block }

{$ifdef DEBUG}
    bits_sent : ulg;    { bit length of the compressed data }
{$endif}

    bi_buf : ush;

    bi_valid : int;

    case byte of
    0:(max_lazy_match : uInt);

    1:(max_insert_length : uInt);
  end;

procedure _tr_init (var s : deflate_state);

function _tr_tally (var s : deflate_state;
                    dist : unsigned;
                    lc : unsigned) : boolean;

function _tr_flush_block (var s : deflate_state;
                          buf : pcharf;
                          stored_len : ulg;
			  eof : boolean) : ulg;

procedure _tr_align(var s : deflate_state);

procedure _tr_stored_block(var s : deflate_state;
                           buf : pcharf;
                           stored_len : ulg;
                           eof : boolean);



type
  TAlloc = alloc_func;
    {function (AppData: Pointer; Items, Size: Integer): Pointer;}
  TFree = free_func;
    {procedure (AppData, Block: Pointer);}

  { Internal structure.  Ignore. }
  TZStreamRec = z_stream;

const
  FBufSize = 8192;
type
  { Abstract ancestor class }
  TCustomZlibStream = class(TStream)
  private
    FStrm: TStream;
    FStrmPos: Integer;
    FOnProgress: TNotifyEvent;
    FZRec: TZStreamRec;
    FBuffer: array [0..FBufSize-1] of Char;
  protected
    procedure Progress(Sender: TObject); dynamic;
    property OnProgress: TNotifyEvent read FOnProgress write FOnProgress;
    constructor Create(Strm: TStream);
  end;

{ TCompressionStream compresses data on the fly as data is written to it, and
  stores the compressed data to another stream.

  TCompressionStream is write-only and strictly sequential. Reading from the
  stream will raise an exception. Using Seek to move the stream pointer
  will raise an exception.

  Output data is cached internally, written to the output stream only when
  the internal output buffer is full.  All pending output data is flushed
  when the stream is destroyed.

  The Position property returns the number of uncompressed bytes of
  data that have been written to the stream so far.

  CompressionRate returns the on-the-fly percentage by which the original
  data has been compressed:  (1 - (CompressedBytes / UncompressedBytes)) * 100
  If raw data size = 100 and compressed data size = 25, the CompressionRate
  is 75%

  The OnProgress event is called each time the output buffer is filled and
  written to the output stream.  This is useful for updating a progress
  indicator when you are writing a large chunk of data to the compression
  stream in a single call.}


  TCompressionLevel = (clNone, clFastest, clDefault, clMax);

  TCompressionStream = class(TCustomZlibStream)
  private
    function GetCompressionRate: Single;
  public
    constructor Create(CompressionLevel: TCompressionLevel; Dest: TStream);
    destructor Destroy; override;
    function Read(var Buffer; Count: Longint): Longint; override;
    function Write(const Buffer; Count: Longint): Longint; override;
    function Seek(Offset: Longint; Origin: Word): Longint; override;
    property CompressionRate: Single read GetCompressionRate;
    property OnProgress;
  end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费观看日韩av| 久久99久久99| 偷窥国产亚洲免费视频| 91免费国产在线观看| 丁香五精品蜜臀久久久久99网站| 色综合天天狠狠| 肉丝袜脚交视频一区二区| 亚洲激情自拍视频| 亚洲一区二区精品久久av| 欧美日韩色综合| 3d动漫精品啪啪一区二区竹菊| 另类小说图片综合网| 看片网站欧美日韩| 国产一区不卡在线| 99久久精品一区| 色94色欧美sute亚洲线路一ni | 亚洲天堂久久久久久久| 亚洲视频中文字幕| 亚洲一区二三区| 石原莉奈在线亚洲三区| 国产色综合一区| 国产精品久久久99| 亚洲午夜精品网| 日韩av一区二区在线影视| 国产女同互慰高潮91漫画| 亚洲日本护士毛茸茸| 亚洲免费看黄网站| 蜜臀精品久久久久久蜜臀| 亚洲欧美一区二区在线观看| 精品国产区一区| 成人久久18免费网站麻豆 | 激情另类小说区图片区视频区| 亚洲欧洲精品天堂一级| 亚洲卡通欧美制服中文| 日本欧美在线观看| 春色校园综合激情亚洲| 日本久久一区二区三区| 欧美不卡激情三级在线观看| 国产精品黄色在线观看| 蜜桃视频在线观看一区| 91色九色蝌蚪| 26uuu精品一区二区在线观看| 欧美日韩高清影院| 91亚洲精品一区二区乱码| 久久精品久久久精品美女| 高清成人在线观看| 欧美精品三级日韩久久| 成人免费一区二区三区视频| 久久成人综合网| 欧美亚洲动漫精品| 中文字幕av一区 二区| 日韩avvvv在线播放| 91视频在线观看| 国产日韩精品一区二区三区在线| 日本精品一区二区三区高清 | av中文一区二区三区| 欧美剧在线免费观看网站| 国产精品免费av| 国内精品久久久久影院色| 亚洲一区二区在线免费看| 欧洲亚洲国产日韩| 99久久久国产精品| 久久众筹精品私拍模特| 日韩精品一二三区| 欧美日韩黄视频| 亚洲在线一区二区三区| 色呦呦国产精品| 中文字幕综合网| 亚洲乱码日产精品bd| 国产麻豆一精品一av一免费| 日韩欧美国产一区二区三区| 洋洋av久久久久久久一区| 色综合久久中文字幕综合网| 亚洲色图欧美激情| 91免费版在线| 亚洲精品成人天堂一二三| 99久久婷婷国产综合精品| 中文字幕一区在线观看视频| 国产成人av资源| 国产精品青草久久| 国产丝袜在线精品| 国产精品综合久久| 国产午夜三级一区二区三| 国产毛片精品视频| 国产精品免费网站在线观看| 91在线porny国产在线看| 亚洲欧洲日韩一区二区三区| 91原创在线视频| 亚洲动漫第一页| 国产一区二区福利视频| 欧美激情一二三区| 波多野洁衣一区| 亚洲精品国产无天堂网2021| 欧美在线影院一区二区| 国产日韩精品一区| 99热在这里有精品免费| 一区二区三区在线观看视频| 欧美午夜精品久久久久久孕妇 | 91色|porny| 亚洲综合一区二区精品导航| 7777精品伊人久久久大香线蕉最新版| 国产精品美女久久久久久久久| 亚洲国产精品一区二区尤物区| 国产高清不卡一区| 亚洲欧美一区二区三区国产精品| 免费在线观看视频一区| 美女视频一区二区三区| 日本一区二区免费在线观看视频 | 麻豆国产欧美一区二区三区| 91网站在线观看视频| 午夜精品免费在线观看| 99国产精品久久久久久久久久久| 久久综合中文字幕| 波多野结衣中文字幕一区 | 欧美精品一级二级三级| 欧美亚洲尤物久久| 久久成人精品无人区| 亚洲欧美日韩国产一区二区三区| 一区二区三区蜜桃| 久久影视一区二区| 欧美三级电影网站| 国产二区国产一区在线观看| 欧美一二三在线| 色婷婷综合视频在线观看| 久久精品国产精品亚洲红杏| 亚洲天堂精品视频| 精品国产99国产精品| 欧美揉bbbbb揉bbbbb| 不卡av免费在线观看| 经典一区二区三区| 亚洲不卡av一区二区三区| 国产欧美综合在线| 26uuu欧美| 日韩欧美在线不卡| 欧美色偷偷大香| 91久久精品一区二区三区| 精品中文字幕一区二区| 久久男人中文字幕资源站| 精品国产亚洲在线| 亚洲一区二区欧美日韩| 国产日韩欧美一区二区三区乱码| 成人精品在线视频观看| 激情图区综合网| 日本亚洲一区二区| 一区二区成人在线| 亚洲日本中文字幕区| 国产精品美女久久久久aⅴ| 2024国产精品| 精品久久久久久综合日本欧美| 丁香激情综合国产| 国产一级精品在线| 国产最新精品免费| 精品亚洲成a人在线观看| 精品夜夜嗨av一区二区三区| 狠狠狠色丁香婷婷综合久久五月| 久久久久久亚洲综合| 欧美精品一区二区三区很污很色的| 国产精品夜夜嗨| 国产91丝袜在线18| 成人蜜臀av电影| 一区二区三区欧美激情| 久久国产精品99精品国产| 一区二区三区在线观看网站| 一区二区在线电影| 亚洲第一狼人社区| 日韩在线一区二区三区| 免费人成黄页网站在线一区二区 | 精东粉嫩av免费一区二区三区| 久久女同性恋中文字幕| 久久久91精品国产一区二区精品| 91免费在线播放| 欧美日韩在线三区| 日韩精品资源二区在线| 色成人在线视频| 欧美日本韩国一区二区三区视频 | 成人免费观看视频| 99久久国产综合精品色伊| 在线观看国产91| 日韩午夜电影av| 国产精品女主播av| 亚洲国产精品一区二区久久| 日韩福利电影在线| 亚洲精品国产精华液| 国产视频一区在线观看| 国产精品国产三级国产普通话蜜臀 | 在线观看一区日韩| 懂色av一区二区三区蜜臀| 91色综合久久久久婷婷| 欧美精品乱码久久久久久 | 久久精品国产网站| 福利电影一区二区| 欧美日韩免费视频| 国产欧美精品日韩区二区麻豆天美| 欧美日韩一本到| 中文乱码免费一区二区| 在线成人av影院| 国产精品另类一区| 日韩激情视频在线观看| 92国产精品观看| 日韩免费视频一区二区|