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

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

?? 3.pas

?? google引擎源碼 .rar
?? PAS
字號:

type
  TRLEData = packed record
    rdLen : byte;
    rdVal : byte;
  end;
  TRLEPacker = class
    private
      FRLEData : array[0..7] of TRLEData;
      FRLEInx  : integer;
      FBuffer  : PByteArray;
      FBufInx  : integer;
    protected
      procedure rpWriteEncoding(aCount : integer);
    public
      constructoe Create(aBufSize : integer);
      destructor  Destroy : override;
      procedure   Add(aLen : byte; aValue : byte);
      procedure   MarkComplete;
      procedure   CopyBuffer(var aDest);
      property    BufferLen : integer read FBufInx;
    end;

constructor TRLEPacker.Create(aBufSize : integer);
begin
  inherited Create;
  GetMem(FBuffer , aBufSize);
end;

destructor TRLEPacker.Destroy;
begin
  if (FBuffer <> nil) then
    FreeMem(FBuffer);
  inherited Destroy;
end;

procedure TRLEPacker.CopyBuffer(var aDest);
begin
  Move(FBuffer^ , aDest, FBufInx);
end;

procedure TRLEPacker.Add(aLen : byte; aAalue : byte);
begin
  FRLEDara[FRLEInx].rdLen := aLen;
  FRLEData[FRLEInx].rdVal := aValue;
  inc(FRLEInx);
    if (FRLEInx = 8 ) then
      rpWriteEncoding(8);
end;

procedure TRLEPacker.MarkComplete;
begin
  {add the sentinel to indicate end-off-compressed-data(a code for a length of zerodoes this)}
  Add(0,0);
  {write out any final encoding}
  if (FRLEInx <> 0) then
    rpWriteEncoding(FRLEInx);
end;

procedure TRLEPacker.rpWriteEncoding(aCount : integer);
var
  i : integer;
  ControlByte : byte;
begin
  {initialize the control byte}
  ControlByte := 0;
  {for all the encodings, set the relevant bit of the control byte if a run, leave it clear otherwise (note: the end-of-data sentinel has a length of zero and this code treats it as an actual length)}
  for i := 0 to pred(aCount) do 
    begin
      ControlByte := ControlByte shl 1;
      if (FRLEData[i].rdLen <> 1) then inc(ControlByte);
    end;
  {if the number of encoding is less than 8, set the rest of the bits as clear}
  if (aCount <> 8) then
    for i := aCount to 7 do
      ControlByte := ControlByte shl 1;
  {write out the control byte}
  FBuffer^[FBufInx] := ControlByte;
  inc(FBufInx);
  {write out the encodings, either as run length followed by the byte or as the byte itself if the runlength were 1}
  for i := 0 to pred(aCount) do 
    begin
      case FRLEData[i].rdLen of
        0 : begin
              FBuffer^[FBufInx] := 0;
              inc(FBufInx);
            end;
        1 : begin
              FBuffer^[FBufInx[ := FRLEData[i].rdVal;
              inc(FBufInx);
            end;
        else  {any other value :2..255}
            FBuffer^[FBufInx] := FRLEData[i].rdLen;
            inc(FBufInx);
            FBuffer^[FBufInx] := FRLEData[i].rdVal;
            inc(FBufInx);
      end;
    end;
  FRLEInx := 0;
end;

procedure TaaBitSet.bsPack;
var
  i      : integer;
  B      : byte;
  PrevB  : byte;
  RunLEn : byte;
  PAcker : TRLEPacker;
begin
  {allocate a packer object with a buffer big enough for the worst case, in which all runs are of length one—that is, packing will grow the data by 1 byte for each 8 unapcked bytes, plus one byte over for the sentinel}
  Packer := TRLEPacker.Create(FBitArraySize + ((FBitArraysize + 8) div 8));
  try
    {set it up so previous byte is the first byte and current run length is zero: marks loop code easier}
    PrevB := FBitArray^[0];
    RunLen := 0;
    {process the rest of the bytes}
    for i := 0 to pred(FBitArraySize) do
      begin
        {get the next byte}
        B := FBitArray^[i];
        {if it is different from the previous byte, close off the previous run and start a new one}
        if (B <> PrevB) then 
          begin
            Packer.Add(RunLen , PrevB);
            PrevB := B;
            RunLen := 1;
          end
        {otherwise, continue this run}
        else
          begin
            {if we've already reached 255 bytes in this run before adding this byte, close it off and start a new one}
            if (RunLen = 255) then
              begin
                Packer.Add(RunLen , PrevB);
                RunLen := 0;
              end;
            inc(RunLen);
          end;
      end;
    {close off the final run}
    Packer.Add(RunLen , PrevB);
    {mark the packer object as being complete (this adds the sentinel and calculates the compressed buffer size}
    Packer.MarkComplete;
    {reallocate our buffer and copy over the compressed data}
    FBitArraySize := PAcker.BufferLen;
    ReallocMem(FBitArray , FBitArraySize);
    Packer.CopyBuffer(FBitArray^);
    FPacked := ture;
  finally
    Packer.Free;
  end;
end;

procedure TaaBitSet.bsUnpack;
var
  i      : integer;
  Buf    : PButeArray;
  RunLen : integer;
  InInx  : integer;
  OutInx : integer;
  Done   : boolean;
  Value  : byte;
  Mask   : byte;
  ControlByte : byte;
begin
  {allocate output buffer large enough to hold all the bits}
  GetMem(Buf , (FBitCount + 7) div 8);
  try
    {initialize for the loop}
    Done := false;
    InInx := 0;
    OutInx := 0;
    {continue unpacking until the end of compressed data is found}
    repeat
      {set the mask for the control byte}
      Mask := $80;
      {read the control byte}
      ControlByte := FBitArray^[InInx];
      inc(InInx);
      {repeat until all the bits in the control byte have been used}
      while (Mask <> 0) do
        begin
          {if the control bit says that the next byte is literal, copy it over to the output buffer}
          if ((ControlByte and Mask) = 0) then
            begin
              Buf^[OutInx] := FBitArray^[InInx];
              inc(OutInx);
              inc(InInx);
            end
          {otherwise it's an FLE instruction; get the run length and the value to copy and duplivate it {note: a runlength of zero indicates the end of the compressed data)}
          else
            begin
              RunLen := FBitArray^[InInx];
              inc(InInx);
              if (RunLen = 0) then 
                begin
                  Done := true;
                  Break;
                end
              else
                begin
                  Value := FBitArray^[InInx];
                  inc(InInx);
                  for i := 1 to RunLen do
                    begin
                      Buf^[OutInx] := Value;
                      inc(OutInx);
                    end;
                end;
            end;
          {set mask to get the next bit} 
          Mask L= Mask shr 1;
        end;
      until Done;
      {throw away the old packed buffer, and set it (and other fields) for the new unpacked one}
      FreeMem(FBitArray);
      FBitArray := Buf;
      FBitArraySize := (FBitCount + 7) div 8;
      FPacked := false;
    except
      FreeMem(Buf);
      raise;
    end;
end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲四区在线观看| 国产精品国产自产拍在线| 在线观看三级视频欧美| 97国产精品videossex| 色婷婷一区二区| 欧美性猛交xxxx乱大交退制版| 欧美日韩亚洲综合一区| 69堂亚洲精品首页| 日韩限制级电影在线观看| 精品国产免费人成电影在线观看四季| 日韩欧美中文一区| 久久久777精品电影网影网 | 中文字幕在线播放不卡一区| 国产精品成人免费精品自在线观看| 亚洲人成精品久久久久久| 亚洲国产欧美一区二区三区丁香婷| 亚洲成a人v欧美综合天堂下载 | 99久久久久久| 欧美日韩视频在线一区二区| 日韩视频在线永久播放| 久久人人爽爽爽人久久久| 中文字幕一区二区视频| 亚洲高清免费视频| 国产精品亚洲成人| 日本高清视频一区二区| 日韩欧美精品在线| 国产精品女同互慰在线看| 一区二区三区日本| 韩国一区二区视频| 色一区在线观看| 欧美mv日韩mv| 亚洲综合免费观看高清完整版| 毛片av一区二区| 成人手机在线视频| 欧美一区二区三区免费在线看| 国产日韩综合av| 亚洲午夜在线视频| 国产91精品免费| 在线不卡中文字幕播放| 中文字幕在线播放不卡一区| 麻豆成人在线观看| 欧美三级三级三级| 中文字幕免费在线观看视频一区| 亚洲成a人片在线观看中文| 成人午夜伦理影院| 欧美va亚洲va国产综合| 亚洲成人精品一区二区| 99久久夜色精品国产网站| 欧美精品一区二区三区视频| 亚洲福利一二三区| 色先锋久久av资源部| 国产亚洲欧美中文| 久久国产欧美日韩精品| 欧美日韩不卡在线| 亚洲综合色丁香婷婷六月图片| 成人午夜碰碰视频| 国产视频在线观看一区二区三区| 日韩国产在线一| 欧美日韩高清影院| 亚洲午夜久久久久| 91精品办公室少妇高潮对白| 欧美激情一区二区| 懂色av一区二区三区免费看| www一区二区| 国产在线观看一区二区 | 韩国av一区二区三区四区| 欧美日韩一本到| 偷拍亚洲欧洲综合| 欧美性一区二区| 亚洲一二三专区| 欧美色综合久久| 亚洲国产成人av| 91精品在线观看入口| 日韩av不卡一区二区| 欧美一区二区三区在| 看片网站欧美日韩| 精品99999| 国产剧情一区二区三区| 国产香蕉久久精品综合网| 国产一区二区三区在线观看精品 | 91美女在线看| 亚洲综合免费观看高清在线观看| 欧洲日韩一区二区三区| 午夜精品123| 日韩一区二区三区观看| 精品一区二区日韩| 国产网红主播福利一区二区| 日韩亚洲欧美成人一区| 国产一区二区久久| 国产精品婷婷午夜在线观看| 99re这里只有精品首页| 亚洲国产乱码最新视频| 91精品国产综合久久久蜜臀粉嫩 | 国产在线精品免费| 欧美激情在线一区二区三区| 色婷婷精品久久二区二区蜜臂av| 亚洲午夜在线电影| 欧美成人国产一区二区| 成人国产精品免费网站| 亚洲午夜电影在线| 精品久久久久久久久久久久久久久 | 午夜精品免费在线| 精品成a人在线观看| 色哟哟一区二区在线观看| 天天综合天天综合色| 国产亚洲一区二区三区在线观看| 色域天天综合网| 久久国产视频网| 亚洲黄色免费电影| 久久久精品蜜桃| 欧美性受xxxx黑人xyx性爽| 国产一区二区在线电影| 亚洲免费在线观看视频| 久久综合色之久久综合| 91色婷婷久久久久合中文| 免费高清不卡av| 亚洲黄一区二区三区| 久久先锋影音av| 欧美高清激情brazzers| 成人av在线一区二区三区| 日本不卡一二三| 亚洲欧美激情在线| 久久人人爽爽爽人久久久| 欧美精品乱码久久久久久| 成人激情黄色小说| 国产一区二区调教| 日韩在线一区二区| 亚洲精品伦理在线| 亚洲国产精品精华液2区45| 日韩三级精品电影久久久 | 成人综合婷婷国产精品久久蜜臀 | 亚洲电影在线免费观看| 国产精品沙发午睡系列990531| 欧美一级片在线看| 欧美日韩一区二区在线观看| 一本到不卡精品视频在线观看| 国产精品99久久久久久宅男| 毛片av一区二区三区| 男男视频亚洲欧美| 婷婷开心激情综合| 亚洲aⅴ怡春院| 亚洲观看高清完整版在线观看| 亚洲乱码国产乱码精品精98午夜 | 国内精品久久久久影院薰衣草| 日韩高清电影一区| 亚洲va国产天堂va久久en| 亚洲精品成人悠悠色影视| 亚洲麻豆国产自偷在线| 中文字幕一区二区三区蜜月| 亚洲欧洲精品成人久久奇米网| 中文字幕精品一区| 综合网在线视频| 一区二区三区在线不卡| 一区二区三区欧美亚洲| 亚洲高清视频中文字幕| 亚洲国产精品精华液网站| 偷偷要91色婷婷| 久久精品国产精品亚洲红杏| 毛片基地黄久久久久久天堂| 九色综合国产一区二区三区| 久久精品国产亚洲aⅴ| 国产激情精品久久久第一区二区| 国产精品一品二品| 成人黄色在线视频| 欧洲国内综合视频| 欧美精品免费视频| 久久精品一区二区三区不卡 | 久久久久久久av麻豆果冻| 久久久国产精品午夜一区ai换脸| 国产欧美一区二区在线观看| 中文字幕乱码亚洲精品一区| 亚洲精品免费在线| 日韩成人免费电影| 国产福利91精品一区| 色综合久久99| 欧美一区二区三区的| 国产亚洲女人久久久久毛片| 中文字幕日韩欧美一区二区三区| 亚洲国产cao| 国产成人自拍网| 在线观看日韩高清av| 欧美精品一区二区精品网| 中文字幕一区二区三区蜜月| 奇米亚洲午夜久久精品| 成人美女在线视频| 在线电影院国产精品| 国产精品五月天| 婷婷六月综合网| 91在线精品一区二区| 日韩一级视频免费观看在线| 国产精品国产三级国产| 免费成人小视频| 91福利资源站| 中文字幕不卡一区| 奇米精品一区二区三区四区 | 一区精品在线播放| 青青草97国产精品免费观看无弹窗版| 丁香六月久久综合狠狠色| 欧美一区二区女人| 亚洲香蕉伊在人在线观|