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

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

?? myldbtypes.pas

?? 一個本地database引擎,支持中文T_Sql查詢,兼容DELPHI標準數(shù)據(jù)庫控件
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
     MemoryManager.FreeAndNillMem(FBits);
    FNonZeroBitCount := 0;
   end // empty array
  else
   begin
    if (FBits = nil) then
     FBits := MemoryManager.AllocMem(SizeInBytes)
    else
     MemoryManager.ReallocMemAndClearTail(FBits, SizeInBytes);
   end;// not empty array
  if (NewSize < FBitCount) then
   begin
    if (NewSize = 0) then
     FNonZeroBitCount := 0
    else
     begin
      FBitCount := NewSize;
      FNonZeroBitCount := GetNonZeroBitCount;
     end;
   end;
  FBitCount := NewSize;
end;// SetSize


//------------------------------------------------------------------------------
// load from stream
//------------------------------------------------------------------------------
procedure TMYLDBBitsArray.LoadFromStream(Stream: TStream);
var aBitsSize: Integer;
begin
 LoadDataFromStream(FBitCount,Sizeof(FBitCount),Stream,10401);
 LoadDataFromStream(FNonZeroBitCount,Sizeof(FNonZeroBitCount),Stream,10426);
 SetSize(FBitCount);
 if (FBitCount > 0) then
  begin
   aBitsSize := FBitCount div 8;
   if ((FBitCount mod 8) > 0) then
    Inc(aBitsSize);
   LoadDataFromStream(FBits^,aBitsSize,Stream,10402);
  end;
end; // LoadFromStream


//------------------------------------------------------------------------------
// save to stream
//------------------------------------------------------------------------------
procedure TMYLDBBitsArray.SaveToStream(Stream: TStream);
var aBitsSize: Integer;
begin
 SaveDataToStream(FBitCount,Sizeof(FBitCount),Stream,10398);
 SaveDataToStream(FNonZeroBitCount,Sizeof(FNonZeroBitCount),Stream,10427);
 if (FBitCount > 0) then
  begin
   if (FBits = nil) then
    raise EMYLDBException.Create(10399,ErrorLNilPointer);
   aBitsSize := FBitCount div 8;
   if ((FBitCount mod 8) > 0) then
    Inc(aBitsSize);
   SaveDataToStream(FBits^,aBitsSize,Stream,10400);
  end;
end; // SaveToStream


//------------------------------------------------------------------------------
// create
//------------------------------------------------------------------------------
constructor TMYLDBBitsArray.Create;
var
    i,c: Byte;
begin
 FBits := nil;
 SetSize(0);
 for i := 0 to 255 do
  begin
   c := 0;
   if ((i and 1) <> 0) then Inc(c);
   if ((i and 2) <> 0) then Inc(c);
   if ((i and 4) <> 0) then Inc(c);
   if ((i and 8) <> 0) then Inc(c);
   if ((i and 16) <> 0) then Inc(c);
   if ((i and 32) <> 0) then Inc(c);
   if ((i and 64) <> 0) then Inc(c);
   if ((i and 128) <> 0) then Inc(c);
   FBitsTable[i] := c;
  end;
end;// Create


//------------------------------------------------------------------------------
// destroy
//------------------------------------------------------------------------------
destructor TMYLDBBitsArray.Destroy;
begin
 if (FBits <> nil) then
  MemoryManager.FreeAndNillMem(FBits);
end;// Destroy


//------------------------------------------------------------------------------
// get bit value
//------------------------------------------------------------------------------
function TMYLDBBitsArray.GetBit(BitNo: Integer): Boolean;
begin
  if (BitNo >= FBitCount) then
   raise EMYLDBException.Create(10394,ErrorLInvalidBitNo,[BitNo,FBitCount]);
  Result := CheckNullFlag(BitNo, FBits);
end;// GetBit


//------------------------------------------------------------------------------
// set bit value
//------------------------------------------------------------------------------
procedure TMYLDBBitsArray.SetBit(BitNo: Integer; Value: Boolean);
var Bit: Boolean;
begin
  if (BitNo >= FBitCount) then
   raise EMYLDBException.Create(10395,ErrorLInvalidBitNo,[BitNo,FBitCount]);
  Bit := CheckNullFlag(BitNo,FBits);
  if (Bit <> Value) then
   begin
    if (Value) then
     Inc(FNonZeroBitCount)
    else
     Dec(FNonZeroBitCount);
    SetNullFlag(Value, BitNo, FBits);
   end;
end;// SetBit


//------------------------------------------------------------------------------
// returns number of bit = 1 in FBits array by bit position
//------------------------------------------------------------------------------
function TMYLDBBitsArray.GetBitNoByBitPosition(BitPosition: Integer): Integer;
var i,n:    Integer;
    b,k,l:        Byte;
begin
 if (BitPosition >= FNonZeroBitCount) then
  raise EMYLDBException.Create(10428,ErrorLInvalidBitNo,
    [BitPosition,FNonZeroBitCount]);

 if (FBitCount = FNonZeroBitCount) then
  begin
   Result := BitPosition;
   Exit;
  end;

 i := 0; // byte number
 n := 0; // bits count
 while (n+FBitsTable[PByte(FBits + i)^] <= BitPosition) do
  begin
   Inc(n,FBitsTable[PByte(FBits + i)^]);
   Inc(i);
  end;
 Result := i * 8;
 b := PByte(FBits + i)^;
 l := 7;
 if (i = (FBitCount div 8)) then
  l := (FBitCount mod 8)-1;
 for k := 0 to l do
  begin
   if ((b and (1 shl k)) <> 0) then Inc(n);
   if (n > BitPosition) then Break;
   Inc(Result);
  end;
end; // GetBitNoByBitPosition


//------------------------------------------------------------------------------
// returns position of bit = 1 by bit no in FBits array
//------------------------------------------------------------------------------
function TMYLDBBitsArray.GetBitPositionByBitNo(BitNo: Integer): Integer;
var n,i,j:    Integer;
    b,k:      Byte;
begin

 if (BitNo >= FBitCount) then
  raise EMYLDBException.Create(10429,ErrorLInvalidBitNo, [BitNo,FBitCount]);
 if (FBitCount = FNonZeroBitCount) then
  begin
   Result := BitNo;
   Exit;
  end;
 // number of byte with flags
 i := Integer(BitNo) div 8;
 Result := -1; // bits count
 for j := 0 to i-1 do
   Result := Result + FBitsTable[PByte(FBits + j)^];
 // scan last byte
 b := PByte(FBits + i)^;
 n := Integer(BitNo) mod 8;
 for k := 0 to n do
   if ((b and (1 shl k)) <> 0) then Inc(Result);
end; // GetBitPositionByBitNo


//------------------------------------------------------------------------------
// set all bits to 1
//------------------------------------------------------------------------------
procedure TMYLDBBitsArray.SetAllBits;
var
    SizeInBytes: Integer;
begin
 if (FBitCount > 0) then
  begin
    SizeInBytes := (FBitCount div 8) + Integer((FBitCount mod 8) > 0);
    FillChar(FBits^,SizeInBytes,$FF);
  end;
  FNonZeroBitCount := FBitCount;
end; // SetAllBits


//------------------------------------------------------------------------------
// find any bit with specified value
//------------------------------------------------------------------------------
function TMYLDBBitsArray.FindBit(Value: Boolean; var BitNo: Integer): Boolean;
var
  i: Integer;
begin
 {$IFDEF DEBUG_TRACE_ALL_ENGINE}aaWriteToLog('TMYLDBBitsArray.Find1 start');{$ENDIF}
 try
  Result := False;
  if (FBitCount > 0) then
   for i := 0 to FBitCount-1 do
    if (GetBit(i) = Value) then
     begin
       Result := True;
       BitNo := i;
       break;
     end
  finally
   {$IFDEF DEBUG_TRACE_ALL_ENGINE}aaWriteToLog('TMYLDBBitsArray.Find1 end');{$ENDIF}
  end;
end;// FindBit


//------------------------------------------------------------------------------
// Find
//------------------------------------------------------------------------------
function TMYLDBBitsArray.Find(Restart,GoForward: Boolean; CurBitNo: Integer; var FoundBitNo: Integer): Boolean;
var
  i, step: Integer;
begin
 {$IFDEF DEBUG_TRACE_ALL_ENGINE}aaWriteToLog('TMYLDBBitsArray.Find2 start');{$ENDIF}
 try
  { TODO : implement fast bit search }
    Result := False;
    if (GoForward) then
      step := 1
    else
      step := -1;

    if (Restart) then
      if (GoForward) then
        i := 0
      else
        i := FBitCount - 1
    else
      i := CurBitNo + step;

    while (i >= 0) and (i < FBitCount) do
      begin
        if (GetBit(i)) then
          begin
            FoundBitNo := i;
            Result := True;
            break;
          end;
        Inc(i, step);
      end;
  finally
   {$IFDEF DEBUG_TRACE_ALL_ENGINE}aaWriteToLog('TMYLDBBitsArray.Find2 end');{$ENDIF}
  end;
end;// Find



////////////////////////////////////////////////////////////////////////////////
//
// Bits functions
//
////////////////////////////////////////////////////////////////////////////////


//------------------------------------------------------------------------------
// return true if null flag is set (bit = 1)
//------------------------------------------------------------------------------
function CheckNullFlag(
          BitNo:       Integer; // number of bit to check
          NullFlags:   PChar // pointer to bits of null flags
                      ): Boolean;
begin
 Result := ((PByte(NullFlags+(BitNo div 8))^) and (1 shl (BitNo mod 8)) <> 0);
end; // CheckNullFlag


//------------------------------------------------------------------------------
// set or clear a null flag
//------------------------------------------------------------------------------
procedure SetNullFlag(
          ToSet:       Boolean; // if true - set bit = 1, otherwise set bit = 0
          BitNo:       Integer; // number of bit to check
          NullFlags:   PChar // pointer to bits of null flags
                     );
begin
  NullFlags := PChar(NullFlags + (BitNo div 8));
  if (ToSet) then
    PByte(NullFlags)^ := PByte(NullFlags)^ or (1 shl (BitNo mod 8))
  else
    PByte(NullFlags)^ := PByte(NullFlags)^ and (not (1 shl (BitNo mod 8)));
end; // SetNullFlag

{$IFNDEF D6H}

type

TGUID = record
  D1: LongWord;
  D2: Word;
  D3: Word;
  D4: array[0..7] of Byte;
end;

function CoCreateGuid(out guid: TGUID): HResult; stdcall; external 'ole32.dll' name 'CoCreateGuid';
function StringFromCLSID(const clsid: TGUID; out psz: PWideChar): HResult; stdcall;
  external 'ole32.dll' name 'StringFromCLSID';
procedure CoTaskMemFree(pv: Pointer); stdcall;
  external 'ole32.dll' name 'CoTaskMemFree';


function CreateGUID(out Guid: TGUID): HResult;
begin
  Result := CoCreateGuid(Guid);
end;

function GUIDToString(const GUID: TGUID): string;
var
  P: PWideChar;
begin
  if not Succeeded(StringFromCLSID(GUID, P)) then
    raise Exception.Create('StringFromCLSID failed');
  Result := P;
  CoTaskMemFree(P);
end;


{$ENDIF}



function GetTemporaryName(Prefix: String): String;
var
  G: TGUID;
begin
  CreateGUID(G);
  Result := Prefix + GUIDToString(G);
end; // GetTemporaryName

function BracketFieldName(name: String): String;
var
 b: Boolean;
 s: String;
 i: Integer;
begin
 b := (Pos(' ', name) > 0);
 if not b then
  begin
   s := UpperCase(name);
   for i := 0 to MYLDBMaxSQLReservedWords do
    if (s = MYLDBSQLReservedWords[i]) then
     begin
      b := True;
      Break;
     end;
  end;
 if b then
  Result := '['+name+']'
 else
  Result := name;
end;



end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看日韩国产| 首页综合国产亚洲丝袜| 国产成人超碰人人澡人人澡| 日本一区二区三级电影在线观看| 成人教育av在线| 日韩av中文在线观看| 久久在线免费观看| 91精品国产色综合久久| 国产91精品久久久久久久网曝门| 亚洲国产综合色| 亚洲香肠在线观看| 亚洲最新视频在线播放| 亚洲一二三四区不卡| 午夜国产不卡在线观看视频| 午夜精品久久久久久久久| 日韩在线a电影| 热久久久久久久| 韩国av一区二区三区在线观看| 国产精品系列在线观看| 成人不卡免费av| 91久久精品一区二区| 欧美午夜精品一区二区蜜桃| 制服丝袜av成人在线看| 精品99久久久久久| 中文字幕在线免费不卡| 亚洲va欧美va人人爽午夜| 免费在线欧美视频| 处破女av一区二区| 日本道免费精品一区二区三区| 欧美日韩精品欧美日韩精品一综合| 在线电影院国产精品| 26uuu国产电影一区二区| 国产精品区一区二区三区| 一区二区三区四区在线播放| 日本亚洲视频在线| 成人av网站在线观看免费| 在线观看免费视频综合| 日韩精品一区二区三区四区| 久久久99精品久久| 亚洲最新视频在线观看| 另类中文字幕网| av电影天堂一区二区在线观看| 欧美三区免费完整视频在线观看| 精品国产乱码久久久久久影片| 中文字幕欧美国产| 五月激情综合色| 国产精品456| 精品视频资源站| 欧美国产日产图区| 性做久久久久久免费观看| 国产成人一区在线| 欧美日韩在线观看一区二区| 久久久久国色av免费看影院| 一区二区三区四区av| 国产美女一区二区三区| 欧美日韩一卡二卡三卡 | 成人app软件下载大全免费| 精品视频全国免费看| 国产精品女人毛片| 蜜桃视频一区二区| 在线精品亚洲一区二区不卡| 久久综合成人精品亚洲另类欧美| 一区二区三区四区不卡视频 | 欧美大片拔萝卜| 亚洲精品视频观看| 国产一区在线精品| 欧美伦理视频网站| 亚洲男人的天堂一区二区| 精品亚洲成av人在线观看| 欧美日韩在线播| 国产精品国产a级| 精品在线视频一区| 9191成人精品久久| 亚洲免费av观看| 懂色av一区二区在线播放| 欧美一区二区三区喷汁尤物| 一区二区三区影院| 99re热视频这里只精品| 国产欧美日韩另类一区| 精品中文av资源站在线观看| 制服丝袜日韩国产| 亚洲午夜久久久久中文字幕久| 99视频在线精品| 亚洲国产成人自拍| 国产成人免费高清| 精品少妇一区二区三区免费观看| 亚洲国产视频直播| 色婷婷久久99综合精品jk白丝| 国产精品美女久久久久aⅴ | 欧美一区二区三区成人| 亚洲夂夂婷婷色拍ww47| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 免费在线观看成人| 欧美一区二区三区色| 亚洲成人一区二区在线观看| 欧美在线综合视频| 亚洲乱码国产乱码精品精的特点 | 日韩免费视频一区二区| 日韩成人午夜精品| 欧美日韩大陆在线| 日日嗨av一区二区三区四区| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲激情一二三区| 日本丶国产丶欧美色综合| 一区二区三区av电影| 欧美性猛交xxxxxxxx| 亚洲电影你懂得| 欧美一区中文字幕| 麻豆国产精品视频| 26uuu国产一区二区三区| 国产剧情一区二区三区| 国产免费观看久久| 99国产欧美久久久精品| 亚洲精品一二三| 欧美日韩精品二区第二页| 日韩专区中文字幕一区二区| 日韩一区二区三区观看| 精品一区二区影视| 国产亚洲欧美日韩日本| 成人av资源在线观看| 亚洲美女免费视频| 欧美日韩情趣电影| 老司机午夜精品| 日本一区二区免费在线观看视频| 99在线精品视频| 亚洲香肠在线观看| 欧美成人艳星乳罩| 成人h动漫精品一区二区| 一区二区免费在线| 欧美一区二区三区四区久久| 国产一区二区视频在线| 国产精品久久久久久亚洲伦| 欧美中文一区二区三区| 蜜桃一区二区三区四区| 国产日韩欧美综合在线| 91捆绑美女网站| 日本vs亚洲vs韩国一区三区| 国产三级精品在线| 欧美三区在线观看| 国产精品1区二区.| 依依成人精品视频| 日韩欧美资源站| 成人黄色电影在线 | 日本在线不卡一区| 国产欧美一区二区精品秋霞影院| 91福利在线看| 国精产品一区一区三区mba视频| 国产精品无圣光一区二区| 欧美在线你懂得| 狠狠色丁香婷婷综合| 亚洲蜜臀av乱码久久精品蜜桃| 日韩午夜小视频| aaa亚洲精品| 久久99国产精品免费| 亚洲视频一区二区在线观看| 欧美大片在线观看一区二区| 成人一道本在线| 日韩电影一区二区三区| 最新日韩在线视频| 精品国产乱码久久久久久蜜臀| 99精品久久只有精品| 毛片一区二区三区| 亚洲一区在线电影| 国产精品色在线| 日韩欧美成人一区二区| 色悠悠亚洲一区二区| 国产iv一区二区三区| 免费高清在线视频一区·| 一区二区三区四区中文字幕| 国产亚洲美州欧州综合国| 欧美精品第1页| 日本精品一区二区三区高清| 国产成人精品网址| 免播放器亚洲一区| 香蕉久久夜色精品国产使用方法| 国产精品福利影院| 2017欧美狠狠色| 日韩一区二区在线播放| 在线一区二区视频| 99国产精品久| 国产成人精品亚洲午夜麻豆| 久久99久久99小草精品免视看| 亚洲国产中文字幕| 亚洲免费毛片网站| 日韩一区欧美一区| 国产精品毛片高清在线完整版| 精品久久久久久久久久久久久久久 | 亚洲午夜精品网| 亚洲色图欧美偷拍| 国产精品网曝门| 久久久不卡影院| 欧美www视频| 日韩西西人体444www| 91精品国产综合久久久久| 欧美日韩一区不卡| 欧美性高清videossexo| 欧美亚洲动漫精品| 欧美视频中文字幕| 欧美色涩在线第一页| 欧美性极品少妇|