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

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

?? myldbcompression.pas

?? 一個本地database引擎,支持中文T_Sql查詢,兼容DELPHI標(biāo)準(zhǔn)數(shù)據(jù)庫控件
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
unit MYLDBCompression;

interface

{$I MYLDBVer.inc}

{$DEFINE ZLIB}
{$DEFINE PPMD}
{$DEFINE BZIP}


uses SysUtils,Classes,Windows,

// MYLDBoluteDatabase units

    {$IFDEF DEBUG_LOG}
     MYLDBDebug,
    {$ENDIF}

     MYLDBTypes,
     MYLDBMemory,
     MYLDBConst,
     MYLDBExcept
{$IFDEF ZLIB}
     ,MYLDBZlib
{$ENDIF}
{$IFDEF BZIP}
    ,MYLDBBzip2
{$ENDIF}
;

type

 TMYLDBCompressionAlgorithm = (acaNone,acaZLIB,acaBZIP,acaPPM);
 // SQL Names of CompressionAlgorithm
const MYLDBCompressionAlgorithmNames:array[0..3] of String = ('NONE', 'ZLIB','BZIP','PPM');

type
 TMYLDBCompressionMode = Byte; // 0-9
 TMYLDBCompressionLevel = (aclNone,aclFastest,aclNormal,aclMaximum); // 0,1,5,9

 TMYLDBCompression = packed record
  CompressionAlgorithm: TMYLDBCompressionAlgorithm;
  CompressionMode:      TMYLDBCompressionMode;
  CompressionLevel:     TMYLDBCompressionLevel;
 end;

var
 // block sizes for stream classes, LoadFromStream / SaveToStream
 DefaultTemporaryBlockSize: Integer = 100 * 1024;
 // size of maximum temporary stream that stores in memory
 DefaultTemporaryLimit: Integer = 1024 * 1024;
 DefaultMemoryBlockSize: Integer = 100 * 1024; // for memory stream
 DefaultFileBlockSize: Integer = 100 * 1024; // for memory stream
 DefaultBLOBBlockSize: Integer = 100 * 1024; // for BLOB stream
 BlockSizeForFastest: Integer = 512 * 1024; // 0.5 Mb for fastest modes
 BlockSizeForNormal: Integer = 1024 * 1024; // 1.0 Mb for normal modes
 BlockSizeForMax: Integer = 1536 * 1024; // 1.5 Mb for max modes

const

 PPM_MO: array [1..9] of Byte = (2,3,4, 5, 7, 8,10, 13, 16); // Model Order
 PPM_SA: array [1..9] of Byte = (2,3,7,16,22,25,40,100,100); // MBytes RAM

type
 // Events
 TMYLDBNoCancelProgressEvent = procedure(
                                        Sender:       TObject;
                                        PercentDone:  Double
                             		) of object;


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBStream
//
////////////////////////////////////////////////////////////////////////////////


  TMYLDBStream = class (TStream)
  private
    FCSect:             TRTLCriticalSection;
    FBlockSize:         Integer;
    FOnProgress:        TMYLDBNoCancelProgressEvent; // progress for bulk operations
    FModified:   Boolean;
   protected
    // on progress
    procedure DoOnProgress(Progress: Double);
   public
    // lock
    procedure Lock; virtual;
    // unlock
    procedure Unlock; virtual;
    constructor Create;
    procedure SaveToStream(Stream: TMYLDBStream);
    procedure LoadFromStreamWithPosition(
                    Stream:       TMYLDBStream;
                    FromPosition: Int64;
                    StreamSize:   Int64
                    );
    procedure LoadFromStream(Stream: TMYLDBStream);
    procedure LoadFromFile(const FileName: string);
    procedure SaveToFile(const FileName: string);
   public
    property BlockSize: Integer read FBlockSize write FBlockSize;
    // Progress Event
    property OnProgress: TMYLDBNoCancelProgressEvent read FOnProgress write FOnProgress;
    property Modified: Boolean read FModified write FModified;
  end; // TMYLDBStream


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBMemoryStream
//
////////////////////////////////////////////////////////////////////////////////


  TMYLDBMemoryStream = class (TMYLDBStream)
   private
    FBuffer:        PChar;
    FBufferSize:    Integer;
    FAllocatedBufferSize: Integer;
    FPosition:      Integer;
   protected
    // sets new size of the stream
    procedure InternalSetSize(const NewSize: Int64);
    // seek
    function InternalSeek(NewPosition: Integer): Integer;
    // sets new size of the stream
    procedure SetSize(NewSize: Longint);
    {$IFDEF D6H}
      overload;
    {$ENDIF}
      override;
    {$IFDEF D6H}
    procedure SetSize(const NewSize: Int64); overload; override;
    {$ENDIF}
   public
    function Read(var Buffer; Count: Longint): Longint; override;
    function Write(const Buffer; Count: Longint): Longint; override;
    function Seek(Offset: Longint; Origin: Word): Longint;
    {$IFDEF D6H}
            overload;
    {$ENDIF}
      override;
    {$IFDEF D6H}
    function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; overload; override;
    {$ENDIF}
    constructor Create(Buffer: PChar = nil; DefaultAllocatedSize: Integer = 0);
    destructor Destroy; override;
   public
    property Buffer: PChar read FBuffer;
  end; // TMYLDBStream


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBFileStream
//
////////////////////////////////////////////////////////////////////////////////


  TMYLDBFileStream = class (TMYLDBStream)
   private
    FHandle:      Integer;
    FFileName:    String;
    FMode:        Word;
    FIsTemporary: Boolean;
   protected
    function InternalFileCreate(const FileName: string): Integer;
    // sets new size of the stream
    procedure InternalSetSize(const NewSize: Int64);
    // sets new size of the stream
    procedure SetSize(NewSize: Longint);
    {$IFDEF D6H}
      overload;
    {$ENDIF}
      override;
    {$IFDEF D6H}
    // sets new size of the stream
    procedure SetSize(const NewSize: Int64); overload; override;
    {$ENDIF}
   public
    function Read(var Buffer; Count: Longint): Longint; override;
    function Write(const Buffer; Count: Longint): Longint; override;
    function Seek(Offset: Longint; Origin: Word): Longint;
    {$IFDEF D6H}
            overload;
    {$ENDIF}
      override;
    {$IFDEF D6H}
    function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; overload; override;
    {$ENDIF}
    constructor Create(const FileName: string; Mode: Word; IsTemporary: Boolean = False);
    destructor Destroy; override;
   public
    property Handle: Integer read FHandle;
    property FileName: String read FFileName;
    property Mode: Word read FMode;
    property IsTemporary: Boolean read FIsTemporary;
  end; // TMYLDBStream


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBTemporaryStream
//
////////////////////////////////////////////////////////////////////////////////


  TMYLDBTemporaryStream = class (TMYLDBStream)
   private
    FMemoryLimit:        Integer;
    FMemoryStream:       TMYLDBMemoryStream;
    FFileStream:         TMYLDBFileStream;
    FFileName:           String;
    FInMemory:           Boolean;
    FDisableTempFiles:   Boolean;
   protected
    // sets new size of the stream
    procedure InternalSetSize(const NewSize: Int64);
    // sets new size of the stream
    procedure SetSize(NewSize: Longint);
    {$IFDEF D6H}
      overload;
    {$ENDIF}
      override;
    {$IFDEF D6H}
    // sets new size of the stream
    procedure SetSize(const NewSize: Int64); overload; override;
    {$ENDIF}
   public
    function Read(var Buffer; Count: Longint): Longint; override;
    function Write(const Buffer; Count: Longint): Longint; override;
    function Seek(Offset: Longint; Origin: Word): Longint;
    {$IFDEF D6H}
            overload;
    {$ENDIF}
      override;
    {$IFDEF D6H}
    function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; overload; override;
    {$ENDIF}
    constructor Create(DisableTempFiles: Boolean);
    destructor Destroy; override;
   public
    property FileStream: TMYLDBFileStream read FFileStream;
    property MemoryStream: TMYLDBMemoryStream read FMemoryStream;
    property FileName: String read FFileName;
    property InMemory: Boolean read FInMemory;
    property MemoryLimit: Integer read FMemoryLimit write FMemoryLimit;
  end; // TMYLDBTemporaryStream


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBCompressedBLOBStream
//
////////////////////////////////////////////////////////////////////////////////


  // MYLDBoluteDatabase BLOB stream with optional compression
  // when compression algorithm <> acaNone Write allowed
  // only ot the end of stream
  TMYLDBCompressedBLOBStream = class (TMYLDBStream)
   private
    FRepair:                Boolean;
    FHeaders:               TMYLDBCompressedStreamBlockHeadersArray;
    FUncompressedSize:      Int64;
    FCompressedSize:        Int64;
    FStartPosition:         Int64;
    FCurrentHeader:         Integer;
    FPosition:              Int64;
    FCompressionMode:       TMYLDBCompressionMode;
    FCompressionAlgorithm:  TMYLDBCompressionAlgorithm;
    FCompressionRate:       Double;
    FCompressedStream:      TStream; // internal stream for storing compressed data
    FBLOBDescriptor:        TMYLDBBLOBDescriptor;
   private
    // returns block size for creating a compressed blob stream with specified compression level
    function InternalGetBlockSize(CompressionMode: Byte): Integer;
    // calculates rate
    procedure CalculateRate;
    // create
    procedure InternalCreate(ToCreate: Boolean);
    // load all headers
    procedure LoadHeaders;
    // prepares buffer for writing (compresses, fills header structure, calculates crc)
    procedure PrepareBufferForWriting(
                                      InBuf:        PChar;
                                      InSize:       Integer;
                                      var OutBuf:   PChar;
                                      var Header:   TMYLDBCompressedStreamBlockHeader
                                     );
    // load block from file, decompress it and checks crc
    procedure LoadBlock(
                        CurHeader:  Int64;
                        var OutBuf: PChar
                       );
    procedure InternalIncreaseSize(NewSize: Int64);
    procedure InternalDecreaseSize(NewSize: Int64);
    procedure InternalSetSize(NewSize: Int64);
    // internal seek
    function InternalSeek(NewPosition: Int64): Int64;
   protected
    // sets new size of the stream
    procedure SetSize(NewSize: Longint);
    {$IFDEF D6H}
      overload;
    {$ENDIF}
      override;
    {$IFDEF D6H}
    procedure SetSize(const NewSize: Int64); overload; override;
    {$ENDIF}
    // gets compressed size
    function GetCompressedSize: Int64;
    // returns compression rate (100.0 if there is no compression)
    function GetCompressionRate: Double;
   public
    // Create
    constructor Create(
						           Stream:                TStream;
                       BLOBDescriptor:        TMYLDBBLOBDescriptor;
                       ToCreate:              Boolean = false;
                       ToRepair:              Boolean = false
                      );
    // Destroy
    destructor Destroy; override;

    function Read(var Buffer; Count: Longint): Longint; override;
   private
    // write beyond EOF
    procedure InternalWriteBeyondEOF;
    // write block
    procedure InternalWriteBlock(InBuf: PChar; InSize: Integer);
    // write prepare
    procedure InternalWritePrepare(Count, Result: Integer);
   public
    function Write(const Buffer; Count: Longint): Longint; override;
    function Seek(Offset: Longint; Origin: Word): Longint;
    {$IFDEF D6H}
     overload;
    {$ENDIF}
     override;
    {$IFDEF D6H}
    function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; overload; override;
    {$ENDIF}

   public
    property CompressedStream: TStream read FCompressedStream;
    // compression rate
    property CompressionRate: Double read GetCompressionRate;
    // compression algorithm
    property CompressionAlgorithm: TMYLDBCompressionAlgorithm read FCompressionAlgorithm;
    // compression mode
    property CompressionMode: Byte read FCompressionMode;
    // compressed size
    property CompressedSize: Int64 read GetCompressedSize;
    property BLOBDescriptor: TMYLDBBLOBDescriptor read FBLOBDescriptor;
  end; // TMYLDBCompressedBLOBStream


 //------------------------------------------------------------------------------
 // compresses buffer
 // returns true if successful
 // outBuf - pointer to compressed data
 // outSize - size of compressed data
 //------------------------------------------------------------------------------
 function MYLDBInternalCompressBuffer(
                          CompressionAlgorithm:   TMYLDBCompressionAlgorithm;
                          CompressionMode:        Byte;
                          InBuf:                  PChar;
                          InSize:                 Integer;
                          out OutBuf:             PChar;
                          out OutSize:            Integer
                          ): Boolean;

 // decompresse buffer
 // Outsize must be set to uncompressed size
 // return true if successful
 // OutBuf - pointer to compressed data
 // OutSize - size of compressed data
 function MYLDBInternalDecompressBuffer(
                          CompressionAlgorithm:   TMYLDBCompressionAlgorithm;
                          InBuf:                  PChar;
                          InSize:                 Integer;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91视频91自| 国产91精品一区二区麻豆亚洲| 欧美日韩激情一区二区三区| 精东粉嫩av免费一区二区三区| 国产精品午夜在线观看| 欧美三级视频在线播放| 国产激情一区二区三区| 视频在线在亚洲| 中文字幕一区二区三区在线观看 | 99视频在线观看一区三区| 肉色丝袜一区二区| 亚洲欧美国产高清| 国产人妖乱国产精品人妖| 欧美一区二区三区视频在线观看| 99精品欧美一区| 国产原创一区二区| 日日夜夜一区二区| 亚洲在线成人精品| 最新中文字幕一区二区三区| 久久综合九色综合欧美98| 欧美精品777| 欧洲一区二区三区在线| 91在线观看下载| 国产**成人网毛片九色| 久久99国内精品| 日韩av网站免费在线| 亚洲高清一区二区三区| 亚洲欧美偷拍卡通变态| 日本一区二区三区免费乱视频 | 久久综合九色综合欧美98| 91精品国产日韩91久久久久久| 欧美伊人精品成人久久综合97| www.欧美精品一二区| 高清不卡一区二区在线| 国产在线视频一区二区三区| 美女在线观看视频一区二区| 日本色综合中文字幕| 亚洲自拍偷拍网站| 亚洲电影一级片| 亚洲国产毛片aaaaa无费看| 亚洲一级片在线观看| 亚洲精品久久久蜜桃| 亚洲免费毛片网站| 亚洲视频小说图片| 亚洲精品亚洲人成人网在线播放| 中文字幕人成不卡一区| 亚洲免费观看高清完整版在线观看| 欧美高清在线一区| 日韩美女精品在线| 伊人色综合久久天天| 一区二区三区毛片| 国产精品影视在线| 国产在线视频一区二区| 国产成人啪午夜精品网站男同| 国产精品亚洲第一| av电影在线观看不卡| 99久久99精品久久久久久| 在线视频国产一区| 欧美猛男gaygay网站| 日韩欧美国产一区二区三区| 精品国产一二三区| 中文字幕乱码久久午夜不卡 | 日韩av电影天堂| 韩日精品视频一区| 成人精品亚洲人成在线| 91久久精品一区二区| 欧美男生操女生| 久久久亚洲精品一区二区三区| 国产欧美一区在线| 一区二区三区日韩欧美| 日日夜夜免费精品视频| 国产精品一卡二卡在线观看| 国产91对白在线观看九色| 在线观看视频一区二区欧美日韩| 91麻豆精品国产自产在线观看一区 | 国产一区二区毛片| 粉嫩av一区二区三区| 在线一区二区三区四区五区| 欧美一区二区高清| 国产精品免费人成网站| 亚洲一区二区三区激情| 极品瑜伽女神91| 一本大道久久a久久精二百| 91精品国产综合久久小美女| 国产欧美精品区一区二区三区| 亚洲综合一二三区| 韩国av一区二区| 在线亚洲+欧美+日本专区| 日韩精品一区二区在线| 亚洲欧洲av另类| 美女一区二区三区| 一本色道a无线码一区v| 日韩一区二区免费在线观看| 国产精品久久三区| 久久国产精品第一页| 色综合久久99| 久久嫩草精品久久久精品一| 亚洲精品高清在线观看| 国产一区二区美女诱惑| 欧美性生活大片视频| 国产天堂亚洲国产碰碰| 日韩高清不卡一区| 一本色道亚洲精品aⅴ| 国产亚洲人成网站| 日韩成人精品在线| 91高清视频免费看| 中文字幕国产一区二区| 奇米四色…亚洲| 欧美三级乱人伦电影| 中文在线免费一区三区高中清不卡| 婷婷中文字幕一区三区| 99久久精品久久久久久清纯| 欧美tickle裸体挠脚心vk| 亚洲成av人**亚洲成av**| 色综合天天天天做夜夜夜夜做| 国产亚洲综合在线| 久久精品免费看| 欧美日韩一区二区三区在线| 亚洲视频每日更新| 成人网在线播放| 精品理论电影在线| 日产国产欧美视频一区精品| 欧美综合视频在线观看| 亚洲日本青草视频在线怡红院| 国产一区二区福利视频| 日韩欧美另类在线| 日本午夜精品视频在线观看| 欧美日韩在线一区二区| 一区二区三区毛片| 色菇凉天天综合网| 亚洲欧美另类在线| 91丨porny丨在线| 亚洲欧美乱综合| 日本精品一级二级| 亚洲精品视频免费看| 91黄色小视频| 一区二区三区四区精品在线视频| 国产成人超碰人人澡人人澡| 久久久精品黄色| 国产成人在线看| 国产欧美日韩精品一区| 成人自拍视频在线观看| 中文字幕不卡三区| 91小视频在线观看| 一区二区三区av电影| 欧美吻胸吃奶大尺度电影| 亚洲第一av色| 91麻豆精品国产91久久久久久久久| 天天操天天干天天综合网| 91麻豆精品91久久久久同性| 日本不卡一区二区三区高清视频| 日韩欧美一级精品久久| 久久99精品久久只有精品| 久久久久久亚洲综合| 粉嫩高潮美女一区二区三区| 亚洲色图丝袜美腿| 在线看日本不卡| 日韩精品一级中文字幕精品视频免费观看 | 午夜欧美一区二区三区在线播放| 欧美日韩精品一区视频| 蜜桃视频一区二区| 国产视频一区二区三区在线观看 | 在线播放国产精品二区一二区四区| 婷婷开心激情综合| 欧美成人伊人久久综合网| 国产美女在线观看一区| 国产精品第五页| 欧美另类变人与禽xxxxx| 久久黄色级2电影| 欧美国产成人在线| 欧美亚洲综合在线| 久久成人av少妇免费| 国产欧美日韩在线观看| 99久久伊人网影院| 午夜精品福利久久久| 久久综合九色综合久久久精品综合| 国产suv一区二区三区88区| 一区二区国产视频| 欧美电影免费观看高清完整版| 国产91丝袜在线播放0| 奇米精品一区二区三区四区 | 亚洲黄色在线视频| 欧美一区二区三区视频免费| 高清视频一区二区| 亚洲成人av资源| 国产清纯白嫩初高生在线观看91 | 欧美日韩国产综合一区二区| 国产一区欧美二区| 一区二区三区在线视频观看| 欧美xxxxx裸体时装秀| 91视视频在线观看入口直接观看www | 天堂蜜桃一区二区三区| 国产女人18水真多18精品一级做| 欧亚洲嫩模精品一区三区| 国产曰批免费观看久久久| 午夜影院久久久| 国产精品高潮久久久久无| 日韩欧美一区中文| 欧美私人免费视频| av不卡免费电影|