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

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

?? myldbcompression.pas

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

 function CRC32(CRC: LongWord; Data: Pointer; DataSize: LongWord): LongWord;
 function GetTempFileName: String;
 procedure SaveDataToStream(var Data; DataSize: Integer; Stream: TStream; ErrorCode: Integer);
 procedure LoadDataFromStream(var Data; DataSize: Integer; Stream: TStream; ErrorCode: Integer);
 procedure SetStreamPosition(Stream: TStream; NewPosition: Int64; ErrorCode: Integer);

 function GetCompressionAlgorithm(Name: String): TMYLDBCompressionAlgorithm;

implementation

{$IFDEF PPMD}
{$L ppmd.OBJ}
function PPMCompressBuffer(inBuf  : pChar;
                           inSize : Integer;
                           outBuf : pChar;
										       Max_Order:integer = 6;
                           SASize:integer = 10
                          ) : Integer; external;

function PPMDecompressBuffer(
                            inBuf  : pChar;
                            inSize : Integer;
                            outBuf : pChar
                            ) : Integer; external;
{$ENDIF}

procedure memset(P: Pointer; B: Byte; count: Integer); cdecl;
begin
  FillChar(P^, count, B);
end;

procedure memcpy(dest, source: Pointer; count: Integer); cdecl;
begin
  Move(source^, dest^, count);
end;


function aa_malloc(count : integer) : pChar;cdecl;
begin
 result := AllocMem(count);
end;

procedure aa_free(buffer : pChar);cdecl;
begin
 FreeMem(buffer);
end;


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


//------------------------------------------------------------------------------
// on progress
//------------------------------------------------------------------------------
procedure TMYLDBStream.DoOnProgress(Progress: Double);
begin
  if Assigned(FOnProgress) then
    FOnProgress(Self,Progress);
end; // on progress


//------------------------------------------------------------------------------
// lock
//------------------------------------------------------------------------------
procedure TMYLDBStream.Lock;
begin
 EnterCriticalSection(FCSect);
end; // Lock


//------------------------------------------------------------------------------
// unlock
//------------------------------------------------------------------------------
procedure TMYLDBStream.Unlock;
begin
  LeaveCriticalSection(FCSect);
end; // Unlock


//------------------------------------------------------------------------------
// Create
//------------------------------------------------------------------------------
constructor TMYLDBStream.Create;
begin
 FBlockSize := DefaultMemoryBlockSize;
 FModified := False;
end; // Create


//------------------------------------------------------------------------------
// save all data to another stream
//------------------------------------------------------------------------------
procedure TMYLDBStream.SaveToStream(Stream: TMYLDBStream);
var OutBytes,OldPos,OldPos1,InSize:	Int64;
    OutSize:					              Integer;
    Buf:            	              PChar;
    FProgress:      	              Extended;
    FProgressMax:   	              Extended;
    ReadBytes,WriteBytes:           Integer;
    Pos:                            Int64;
begin
 if (FBlockSize = 0) then
  raise EMYLDBException.Create(10418,ErrorLZeroBlockSizeIsNotAllowed);
 OldPos := Position;
 OldPos1 := Stream.Position;
 Position := 0;
 OutBytes := 0;
 DoOnProgress(0);
 InSize := Size;
 Buf := AllocMem(FBlockSize);
 while OutBytes < InSize do
  begin
   if (InSize - OutBytes > FBlockSize) then
    OutSize := FBlockSize
   else
    OutSize := Size - OutBytes;

   Pos := Self.Position;
   ReadBytes := Self.Read(Buf^,OutSize);
   if (ReadBytes <> OutSize) then
    raise EMYLDBException.Create(10146,ErrorLCannotReadFromStream,
      [Pos,Self.Size,OutSize,ReadBytes]);

   Pos := Stream.Position;
   WriteBytes := Stream.Write(Buf^,OutSize);
   if (WriteBytes <> OutSize) then
    raise EMYLDBException.Create(10147,ErrorLCannotWriteToStream,
      [Pos,Stream.Size,OutSize,WriteBytes]);

   Inc(OutBytes,OutSize);
   FProgressMax := Size;
   FProgress := OutBytes;
   DoOnProgress(FProgress/FProgressMax*100.0);
  end;
 FreeMem(Buf);
 Position := OldPos;
 Stream.Position := OldPos1;
 DoOnProgress(100.0);
end; // SaveToStream


//------------------------------------------------------------------------------
// load all data from another stream
//------------------------------------------------------------------------------
procedure TMYLDBStream.LoadFromStream(Stream: TMYLDBStream);
begin
 LoadFromStreamWithPosition(Stream,0,Stream.Size);
end; // LoadFromStream


//------------------------------------------------------------------------------
// load from stream
//------------------------------------------------------------------------------
procedure TMYLDBStream.LoadFromStreamWithPosition(
                    Stream:       TMYLDBStream;
                    FromPosition: Int64;
                    StreamSize:   Int64
                    );
var OldPos,OldPos1:	                Int64;
    OutSize:					              Integer;
    Buf:            	              PChar;
    FProgress:      	              Extended;
    FProgressMax:   	              Extended;
    ReadBytes,WriteBytes:           Integer;
    Pos:                            Int64;
begin
 if (FBlockSize = 0) then
  raise EMYLDBException.Create(10419,ErrorLZeroBlockSizeIsNotAllowed);
 OldPos := Position;
 OldPos1 := Stream.Position;
 Stream.Position := FromPosition;
 Size := 0;
 Position := 0;
 DoOnProgress(0);
 Buf := AllocMem(FBlockSize);
 while (Stream.Position < FromPosition + StreamSize) do
  begin
   if ((FromPosition + StreamSize) - Stream.Position > FBlockSize) then
    OutSize := FBlockSize
   else
    OutSize := (FromPosition + StreamSize) - Stream.Position;

   Pos := Stream.Position;
   ReadBytes := Stream.Read(Buf^,OutSize);
   if (ReadBytes <> OutSize) then
    raise EMYLDBException.Create(10148,ErrorLCannotReadFromStream,
      [Pos,Stream.Size,OutSize,ReadBytes]);

   Pos := Self.Position;
   WriteBytes := Self.Write(Buf^,OutSize);
   if (WriteBytes <> OutSize) then
    raise EMYLDBException.Create(10149,ErrorLCannotWriteToStream,
      [Pos,Self.Size,OutSize,WriteBytes]);

   FProgressMax := Stream.Size;
   FProgress := Stream.Position;
   DoOnProgress(FProgress/FProgressMax*100.0);
  end;
 FreeMem(buf);
 Position := OldPos;
 Stream.Position := OldPos1;
 DoOnProgress(100.0);
end;


//------------------------------------------------------------------------------
// load all data from file
//------------------------------------------------------------------------------
procedure TMYLDBStream.LoadFromFile(const FileName: string);
var
  Stream: TMYLDBStream;
begin
  Stream := TMYLDBFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
    LoadFromStream(Stream);
  finally
    Stream.Free;
  end;
end; // LoadFromFile


//------------------------------------------------------------------------------
// save all data to file
//------------------------------------------------------------------------------
procedure TMYLDBStream.SaveToFile(const FileName: string);
var
  Stream: TMYLDBStream;
begin
  Stream := TMYLDBFileStream.Create(FileName, fmCreate);
  try
    SaveToStream(Stream);
  finally
    Stream.Free;
  end;
end; // SaveToFile


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


//------------------------------------------------------------------------------
// sets new size of the stream
//------------------------------------------------------------------------------
procedure TMYLDBMemoryStream.InternalSetSize(const NewSize: Int64);
begin
 if (NewSize <= 0) then
  begin
   FBufferSize := 0;
   FAllocatedBufferSize := 0;
   if (FBuffer <> nil) then
     MemoryManager.FreeAndNillMem(FBuffer);
  end
 else
 if (FAllocatedBufferSize = 0) then
  begin
   FBuffer := MemoryManager.GetMem(NewSize);
   FBufferSize := NewSize;
   FAllocatedBufferSize := NewSize;
  end
 else
  begin
   FBufferSize := NewSize;
   if (FBufferSize > FAllocatedBufferSize) then
     begin
       FAllocatedBufferSize := FBufferSize * 2;
       MemoryManager.ReallocMem(FBuffer,FAllocatedBufferSize);
     end;
  end;
 if (FPosition > FBufferSize) then
  FPosition := FBufferSize;
end; // InternalSetSize


//------------------------------------------------------------------------------
// seek
//------------------------------------------------------------------------------
function TMYLDBMemoryStream.InternalSeek(NewPosition: Integer): Integer;
begin
 FPosition := NewPosition;
 result := FPosition;
end; // InternalSeek


//------------------------------------------------------------------------------
// sets new size of the stream
//------------------------------------------------------------------------------
procedure TMYLDBMemoryStream.SetSize(NewSize: Longint);
begin
 InternalSetSize(NewSize);
end; // SetSize


{$IFDEF D6H}
//------------------------------------------------------------------------------
// sets new size of the stream
//------------------------------------------------------------------------------
procedure TMYLDBMemoryStream.SetSize(const NewSize: Int64);
begin
 InternalSetSize(NewSize);
end; // SetSize
{$ENDIF}


//------------------------------------------------------------------------------
// set size of compressed stream
//------------------------------------------------------------------------------
function TMYLDBMemoryStream.Read(var Buffer; Count: Longint): Longint;
var NewCount: Integer;
begin
 Result := 0;
 if ((FPosition < FBufferSize) and (Count > 0)) then
  begin
   // count more than size of the buffer minus position
   if (Count > FBufferSize - FPosition) then
    NewCount := FBufferSize - FPosition
   else
    NewCount := Count;
   Move(PChar(FBuffer + FPosition)^,Buffer,NewCount);
   Result := NewCount;
   Inc(FPosition,NewCount);
  end;
end; // Read


//------------------------------------------------------------------------------
// set size of compressed stream
//------------------------------------------------------------------------------
function TMYLDBMemoryStream.Write(const Buffer; Count: Longint): Longint;
begin
 if (FBufferSize < FPosition + Count) then
  InternalSetSize(FPosition + Count);
 Result := Count;
 System.Move(Buffer,PChar(FBuffer + FPosition)^,Count);
 Inc(FPosition,Count);
end; // Write


//------------------------------------------------------------------------------
// set size of compressed stream
//------------------------------------------------------------------------------
function TMYLDBMemoryStream.Seek(Offset: Longint; Origin: Word): Longint;
var NewPosition: Integer;
begin
 NewPosition := FPosition;
 case (Origin) of
  soFromBeginning:
    NewPosition := Offset;
  soFromCurrent:
    NewPosition := Integer(FPosition) + Offset;
  soFromEnd:
    NewPosition := Integer(FBufferSize) + Offset;
 end;
 Result := InternalSeek(NewPosition);
end; // Seek


{$IFDEF D6H}
//------------------------------------------------------------------------------
// set size of compressed stream
//------------------------------------------------------------------------------
function TMYLDBMemoryStream.Seek(const Offset: Int64; Origin: TSeekOrigin): Int64;
var NewPosition: Integer;
begin
 NewPosition := 0;
 case (Origin) of
  soBeginning:
    NewPosition := Offset;
  soCurrent:
    NewPosition := FPosition + Offset;
  soEnd:
    NewPosition := FBufferSize + Offset;
 end;
 Result := InternalSeek(NewPosition);
end; // Seek

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
狠狠色综合播放一区二区| 欧美日韩成人综合| 国产精品资源站在线| 日韩**一区毛片| 婷婷成人综合网| 奇米精品一区二区三区在线观看一| 亚洲愉拍自拍另类高清精品| 1000精品久久久久久久久| 国产精品久99| 中文字幕一区二区在线播放| 国产精品欧美一区二区三区| 国产精品天美传媒沈樵| 国产精品色眯眯| 亚洲视频一区在线观看| 夜夜爽夜夜爽精品视频| 亚洲成人av一区二区| 日本不卡在线视频| 久久国产夜色精品鲁鲁99| 精品一二三四区| 国产精品一区二区91| 成人免费视频app| 97se亚洲国产综合自在线不卡| 99久久er热在这里只有精品66| 91热门视频在线观看| 在线观看视频欧美| 欧美高清一级片在线| 欧美精品一区二区三区在线 | 91免费精品国自产拍在线不卡| 99久久国产综合精品女不卡| 欧美在线免费观看视频| 91精品国产综合久久精品图片 | 久久亚洲春色中文字幕久久久| 久久视频一区二区| 一区视频在线播放| 亚洲成人激情自拍| 国产综合色在线| 91蝌蚪porny九色| 在线播放一区二区三区| 欧美精品一区二区三区很污很色的| 亚洲国产精品精华液ab| 不卡区在线中文字幕| 丁香亚洲综合激情啪啪综合| 国产专区欧美精品| 欧美高清激情brazzers| 欧美一区二区黄| 国产亚洲一区二区三区四区 | 成人免费一区二区三区在线观看| 亚洲男同性恋视频| 日本大胆欧美人术艺术动态| 国产成人福利片| 欧美日韩亚洲综合在线| 久久久久青草大香线综合精品| 最新热久久免费视频| 奇米综合一区二区三区精品视频| 国产成人av影院| 91精品国产aⅴ一区二区| 国产精品久久久久久亚洲伦| 婷婷夜色潮精品综合在线| 丁香婷婷综合网| 日韩三级精品电影久久久| 中文字幕在线一区| 久久成人羞羞网站| 日本道精品一区二区三区| 久久久久久日产精品| 日韩精品免费视频人成| 成人午夜大片免费观看| 91精品欧美久久久久久动漫| 自拍偷拍欧美激情| 国产成人在线视频播放| 日韩一区二区精品在线观看| 一区二区三区不卡视频在线观看| 国产成人高清视频| 日韩久久精品一区| 午夜精品视频在线观看| 91在线精品一区二区| 久久久久久久久久久久久女国产乱| 亚洲动漫第一页| 97久久精品人人澡人人爽| 久久久久青草大香线综合精品| 日本91福利区| 欧美午夜精品久久久久久孕妇| 国产精品欧美极品| 国产剧情在线观看一区二区| 51精品秘密在线观看| 亚洲国产精品一区二区尤物区| av不卡免费在线观看| 久久精品视频一区二区| 久久99久久99小草精品免视看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 欧美午夜片在线观看| 亚洲视频电影在线| av电影天堂一区二区在线| 国产欧美日韩在线看| 美女在线视频一区| 欧美精品久久一区二区三区| 亚洲黄网站在线观看| 一本一道久久a久久精品综合蜜臀| 国产精品少妇自拍| 国产 日韩 欧美大片| 中文字幕av一区二区三区高| 国产伦精品一区二区三区免费迷 | ww亚洲ww在线观看国产| 日韩av电影天堂| 日韩一区二区三免费高清| 婷婷成人综合网| 欧美精品乱码久久久久久 | 国产不卡在线一区| 国产香蕉久久精品综合网| 精品一区二区在线播放| 精品国产一二三区| 久久99这里只有精品| 日韩免费观看2025年上映的电影| 蜜臀久久99精品久久久画质超高清| 69av一区二区三区| 青青草91视频| 精品久久久久久久久久久久久久久 | 蜜桃视频在线一区| 欧美成va人片在线观看| 精品一区二区三区蜜桃| 国产亚洲精品福利| eeuss鲁片一区二区三区在线观看| 中文字幕免费在线观看视频一区| 成人av免费在线观看| 亚洲精品乱码久久久久久黑人 | 一本一道久久a久久精品综合蜜臀| 亚洲精品国产第一综合99久久 | 久久久久久久网| 不卡视频一二三四| 亚洲一区在线电影| 欧美一区二区视频网站| 精品一区二区三区在线视频| 国产三级精品视频| 99热这里都是精品| 亚洲a一区二区| 精品三级在线观看| 波多野结衣中文一区| 悠悠色在线精品| 欧美大片一区二区三区| 国产大陆精品国产| 亚洲精品自拍动漫在线| 7777精品伊人久久久大香线蕉最新版| 蜜芽一区二区三区| 日本一区二区高清| 欧美日韩国产精选| 国产乱理伦片在线观看夜一区| 国产精品二区一区二区aⅴ污介绍| 欧美性做爰猛烈叫床潮| 日本不卡一二三| 中文字幕av一区二区三区| 精品视频999| 国产成人综合自拍| 亚洲国产wwwccc36天堂| 26uuu久久天堂性欧美| 99精品国产一区二区三区不卡| 蜜桃av一区二区| 亚洲美女屁股眼交3| 欧美成人一区二区三区在线观看 | 国产亚洲欧美中文| 在线观看亚洲一区| 国产成人啪午夜精品网站男同| 一区二区久久久久| 国产亚洲人成网站| 欧美日韩精品福利| 成人免费视频caoporn| 丝袜诱惑制服诱惑色一区在线观看| 久久精品亚洲麻豆av一区二区| 欧美中文字幕一区二区三区亚洲| 国产在线一区观看| 性感美女极品91精品| 国产精品乱码久久久久久| 制服.丝袜.亚洲.中文.综合| 成人激情图片网| 狂野欧美性猛交blacked| 亚洲在线视频网站| 国产精品妹子av| 久久婷婷一区二区三区| 欧美日韩精品一区二区三区蜜桃 | 欧美丰满一区二区免费视频| 国产98色在线|日韩| 久久se精品一区精品二区| 亚洲一区在线观看视频| 中文字幕在线不卡视频| 精品国产伦一区二区三区观看方式| 欧美视频中文一区二区三区在线观看| 国产成人午夜精品5599| 蜜桃一区二区三区在线观看| 一区二区三区精品视频| 国产精品国产三级国产普通话99| 日韩美女一区二区三区| 91精品免费观看| 欧美另类高清zo欧美| 在线观看视频91| 在线观看亚洲一区| 色久优优欧美色久优优| av在线不卡电影| 成人综合婷婷国产精品久久| 国产在线精品一区在线观看麻豆| 日韩精品亚洲一区| 亚洲国产精品麻豆| 亚洲成av人综合在线观看|