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

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

?? rlecomp.pas

?? 一個delphi下使用的壓縮組件 TCompress Component Set V8
?? PAS
字號:
{ RLECOMP.PAS for TCompress v2.5 -- no change from 2.0

 TCompress Event Handler examples & RLE compression source example

 This file contains (near the bottom) examples of valid handlers for
 OnCompress, OnRecognize and OnExpand events. The rest of the file
 is routines to perform RLE compression, designed to be called by our
 event handlers. The RLE compression is the same as that built-in to TCompress,
 but uses the 'RLX' compression ID -- if it used 'RLE', TCompress would never
 call it for expansion!

 You are free to use this source code as you wish.

 (To use, transfer it ALL into a working form, make proper form object
 declarations for the event handlers at the bottom, AND point the
 Compress object's OnCompress/OnExpand and OnRecognize events at them)

}

const CustomCode = 'RLX' ; { this one is a *custom* RLE handler }
   ChunkSize = 8192;       { work with 8K chunks }


{ Variables for ProcessStreams, getchar, putchar etc. }
var AtStart, InputEOF, inRepeat: Boolean;
    inBuffer, outBuffer: PChar;
    inBmax, inBptr, outBmax, outBptr: Pchar;
    source, dest: TStream;
    lastch: Char;
    DupCount : Integer;
    InChecksum, Outchecksum, Readsize, lChunk, BytesOut: Longint;

const RLEescapechar:char=#148; { thus 65 148 37 is 37 A's, and 148 00 is ONE 148 }

{ Generic routines to get and put characters, buffered. Should not
  change from one compression approach to another... }

function GetChar: Char;
var BytesRead: LongInt;
begin
  if inBptr = inBMax then { done buffer }
  begin
     Application.ProcessMessages;
     Result := #0;
     InputEOF := True; { precautionary }
     if readsize=0 then
        exit; { no more boss }
     if lChunk > readsize then
        lChunk := readsize;
     BytesRead := source.Read(inBuffer^, lChunk); { read chunk }
     readsize:=readsize-BytesRead;
     if BytesRead = 0 then { EOF }
        exit
     else
     begin
       InputEOF := False; { keep on in there... }
       inBmax := inBuffer+BytesRead;
       inBptr := inBuffer;
     end;
  end;
  Result := inBptr^;
  InCheckSum:= InChecksum+Ord(Result);
  Inc(inBptr);
end;

procedure PutChar(ch: Char);
begin
  if outBptr = outBmax then { filled buffer }
  begin
    Application.ProcessMessages;
    dest.writebuffer(OutBuffer^,ChunkSize);
    outBptr := outBuffer;
  end;
  outBptr^ := ch;
  OutCheckSum:= OutChecksum+Ord(ch);
  Inc(outBptr);
  Inc(BytesOut);
end;


{ Start of RLE-specific code }

procedure emit(count: Integer; ch: char);
begin
  if (count > 2) or (count=0) then {only emit if worth it }
  begin
    putChar(RLEescapechar);
    putChar(chr(count));
  end else
  begin
     Dec(count);
     while count > 0 do begin putChar(ch); Dec(count) end;
  end;
end;


procedure CompressRLE;
var ch: Char;
begin
 while True do
 begin
   ch:= GetChar;
   if InputEOF then
   begin
     if inRepeat then
        emit(Dupcount,lastch); { flag the repeat }
     break;
   end;
   if inRepeat then
   begin
      if (lastch = ch) and (DupCount<255) then
        Inc(DupCount) { and stay in inRepeat }
      else
      begin
        emit(DupCount,lastch); { however many }
        lastch := ch;
        if ch=RLEescapechar then
        begin
           emit(0,RLEEscapechar); { flag it }
        end else
           Putchar(ch);
        inRepeat := False;
      end;
   end else
   begin
     if (ch=RLEescapechar) then
        emit(0,ch)
     else if (ch=lastch) and not AtStart then
     begin
        DupCount := 2;
        inRepeat := True;
     end else Putchar(ch);
     lastch := ch;
   end;
   AtStart := False;
 end; { While not InputEOF }
end;

procedure ExpandRLE;
var ch: Char;
begin
 while True do
 begin
   ch:= GetChar;
   if InputEOF then
     break; { done, at last... }
   if ch<> RLEescapechar then
     Putchar(ch)
   else { ok, get a count... MUST be there, really! }
   begin
     DupCount := Ord(GetChar); { 0 if EOF, but not legal, however... }
     if DupCount=0 then Putchar(RLEEscapechar) { special flag }
     else
     begin
        Dec(DupCount);  { because one was already IN the bytestream }
        while Dupcount>0 do begin Putchar(lastch); Dec(DupCount) end;
     end;
   end;
   lastch := ch;
 end; { while }
end;

{ END of RLE }


{ The main handler -- this shouldn't change from compression method to
  compression method -- it just calls what it should... }

function ProcessStreams(outstream, instream: TStream; size: longint;
         var checksum: Longint; mode: TCProcessMode): longint;
begin
  source := inStream; { messy, but allows modular routines w/o zillions of parameters }
  dest := outStream;
  GetMem(inBuffer, ChunkSize); { allocate the buffers }
  inBMax := inBuffer; { initially, until first read... }
  inBptr := inBuffer;
  GetMem(outBuffer, ChunkSize);
  outBMax := outBuffer+ChunkSize;
  outBptr := outBuffer; { not same as inBptr! }
  InputEOF := False;
  AtStart := True;
  lastch := #0;
  inRepeat := False;
  dupCount := 0;
  ReadSize := size;
  lChunk := Chunksize;
  inChecksum:= 0;
  outChecksum := 0;
  try
   if mode = cmCompress then
   begin
    BytesOut:=0;
    CompressRLE;
    checksum := InChecksum;
   end else { expand }
   begin
    BytesOut:=1;
    ExpandRLE;
    checksum := OutChecksum;
   end;
   if outBptr<>OutBuffer then { must flush }
     dest.WriteBuffer(OutBuffer^,outBptr-OutBuffer);
  finally
   FreeMem(inBuffer, ChunkSize); { free the buffer }
   FreeMem(outBuffer, ChunkSize);
  end;
  Result := BytesOut;
end;

{ Now the custom event handlers which provide hooks from TCompress into
  the above code... }

{ NOTE: Make CompressID below an OpenString if using this in Delphi 1.0
  -- don't forget the Form-level declaration too... }
procedure TForm1.Compress1Compress(dest, source: TStream;
  var CompressID: String; var Outputsize, checksum: Longint);
begin
  OutputSize := ProcessStreams(dest,source,source.size,checksum, cmCompress);
  CompressID := CustomCode;
end;

procedure TForm1.Compress1Recognize(CompressID: String;
var recognized: Boolean);
begin
  if CompressID = CustomCode then recognized := True; { easy, yes? }
end;

procedure TForm1.Compress1Expand(dest, source: TStream;
  Sourcesize, DestSize: Longint; CompressID: String; var checksum: Longint);
begin { could check CompressID for more detail, but no need... Destsize not needed either}
  ProcessStreams(dest,source,Sourcesize,checksum, cmExpand);
end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美国产午夜精品| 蜜臀av亚洲一区中文字幕| 亚洲成av人**亚洲成av**| 国内外成人在线| 欧美日韩国产乱码电影| 国产精品嫩草久久久久| 蜜桃av噜噜一区| 欧美亚洲国产bt| 中文久久乱码一区二区| 久久国产精品无码网站| 欧美日韩大陆一区二区| 亚洲色图在线播放| 不卡电影免费在线播放一区| 欧美成人bangbros| 日本va欧美va精品发布| 在线观看视频一区| 亚洲免费观看在线观看| 成人午夜激情片| 亚洲国产成人午夜在线一区| 国模娜娜一区二区三区| 欧美mv日韩mv国产网站| 免费在线看一区| 日韩一级免费一区| 久久成人免费日本黄色| 3atv在线一区二区三区| 婷婷综合五月天| 欧美久久免费观看| 丝袜美腿亚洲一区| 欧美精品在线观看播放| 亚洲成人三级小说| 欧美三级日韩三级| 亚洲成va人在线观看| 91.xcao| 琪琪久久久久日韩精品| 日韩一区二区三区视频在线| 麻豆免费精品视频| 久久精品在这里| 国产成人精品免费网站| 中文字幕av不卡| 色综合天天视频在线观看 | 香蕉久久一区二区不卡无毒影院| 99在线精品观看| 亚洲精品欧美激情| 欧美高清精品3d| 免费成人av资源网| 久久中文字幕电影| 成人午夜精品在线| 亚洲综合色网站| 宅男在线国产精品| 久久爱www久久做| 久久精品一区二区三区不卡 | 国产日韩影视精品| proumb性欧美在线观看| 亚洲综合精品自拍| 精品国产一区二区三区久久久蜜月| 国产一区91精品张津瑜| 亚洲欧洲成人精品av97| 欧美综合在线视频| 狂野欧美性猛交blacked| 中文在线资源观看网站视频免费不卡| 色综合天天性综合| 美女一区二区三区在线观看| 国产精品女同一区二区三区| 在线播放中文字幕一区| 丰满放荡岳乱妇91ww| 亚洲成av人片一区二区三区| 2023国产精品| 欧美午夜宅男影院| 国产精品99精品久久免费| 亚洲一区二区精品久久av| 精品奇米国产一区二区三区| 色婷婷综合久久久久中文一区二区| 美女视频免费一区| 亚洲精品高清在线| 久久亚洲捆绑美女| 欧美日韩国产精品自在自线| 国产91露脸合集magnet| 日本中文字幕不卡| 综合激情成人伊人| 精品国产髙清在线看国产毛片| 91免费看片在线观看| 国产真实乱对白精彩久久| 亚洲大片精品永久免费| 自拍偷拍欧美激情| 国产性做久久久久久| 日韩精品中文字幕一区二区三区 | 国产不卡视频一区二区三区| 亚洲福利视频一区| 亚洲人成网站影音先锋播放| 久久久午夜电影| 日韩女优视频免费观看| 欧美日韩国产中文| 日本福利一区二区| 97se亚洲国产综合自在线不卡| 精品一区二区三区在线观看国产| 亚洲第一主播视频| 亚洲自拍偷拍av| 综合激情网...| 中文字幕在线播放不卡一区| 久久久精品蜜桃| 精品少妇一区二区三区日产乱码| 欧美日韩国产片| 欧美男同性恋视频网站| 在线观看一区二区视频| 色综合久久久网| 91视频国产观看| jlzzjlzz欧美大全| 9i在线看片成人免费| 成人午夜精品在线| av高清久久久| 91天堂素人约啪| 色88888久久久久久影院野外| 99国产精品视频免费观看| 不卡大黄网站免费看| 99久久综合99久久综合网站| 99久久婷婷国产| 色综合久久中文字幕| 日本韩国视频一区二区| 欧美亚日韩国产aⅴ精品中极品| 精品污污网站免费看| 欧美日韩另类国产亚洲欧美一级| 欧美日韩免费视频| 91麻豆精品久久久久蜜臀| 精品久久久久久久久久久久久久久 | zzijzzij亚洲日本少妇熟睡| 丁香婷婷综合五月| 色婷婷av一区二区三区大白胸| 91美女片黄在线观看91美女| 在线日韩av片| 欧美精品黑人性xxxx| 久久亚洲精品小早川怜子| 国产丝袜欧美中文另类| 最近中文字幕一区二区三区| 亚洲成人av电影在线| 免费观看久久久4p| 国产成人精品免费视频网站| 97se亚洲国产综合在线| 911精品国产一区二区在线| 26uuu亚洲综合色欧美| 国产精品网曝门| 亚洲综合清纯丝袜自拍| 欧美96一区二区免费视频| 国产成人精品亚洲午夜麻豆| 欧美亚洲动漫精品| 精品久久久久久久久久久久包黑料 | 亚洲欧美日本韩国| 亚洲成av人片在线观看| 国产一区二区三区综合| 色美美综合视频| 欧美成人激情免费网| 亚洲欧美另类久久久精品| 日韩电影在线免费观看| 国产成人欧美日韩在线电影 | 国产一区二区精品久久91| 成人成人成人在线视频| 欧美日本国产一区| 亚洲国产精品成人综合色在线婷婷 | 国产剧情一区二区| 在线观看日韩av先锋影音电影院| 欧美一区二区日韩| 亚洲欧美日韩在线| 国产乱子轮精品视频| 欧美视频中文字幕| 国产精品热久久久久夜色精品三区 | 丁香天五香天堂综合| 欧美日韩国产免费一区二区| 国产精品国产精品国产专区不片| 日本不卡高清视频| 在线亚洲人成电影网站色www| 久久婷婷综合激情| 亚洲h精品动漫在线观看| 成人国产一区二区三区精品| 精品久久国产97色综合| 亚洲成人动漫精品| 色天天综合色天天久久| 国产日产欧产精品推荐色| 热久久免费视频| 91国产免费观看| 亚洲欧洲av在线| 丁香桃色午夜亚洲一区二区三区| 日韩免费在线观看| 天天影视色香欲综合网老头| 91丨porny丨户外露出| 国产日韩欧美综合一区| 久久黄色级2电影| 欧美二区三区的天堂| 亚洲自拍偷拍九九九| 在线免费一区三区| 亚洲人成网站精品片在线观看| 成人精品gif动图一区| 国产欧美日韩不卡| 国产高清亚洲一区| 国产亚洲综合在线| 国产一区二区日韩精品| 久久夜色精品国产欧美乱极品| 久久91精品久久久久久秒播| 日韩一二三区不卡| 久久99精品久久久久久动态图| 欧美一区二区三区视频在线观看| 三级成人在线视频|