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

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

?? myldbtypes.pas

?? 一個本地database引擎,支持中文T_Sql查詢,兼容DELPHI標準數(shù)據(jù)庫控件
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
    procedure SetBit(BitNo: Integer; Value: Boolean);
    // returns number of bit = 1 in FBits array by bit position
    function GetBitNoByBitPosition(BitPosition: Integer): Integer;
    // returns position of bit = 1 by bit no in FBits array
    function GetBitPositionByBitNo(BitNo: Integer): Integer;
    procedure SetAllBits;
    function FindBit(Value: Boolean; var BitNo: Integer): Boolean;
    function Find(Restart,GoForward: Boolean; CurBitNo: Integer; var FoundBitNo: Integer): Boolean;
   public
    property Size: Integer read FBitCount write SetSize;
    property NonZeroBitCount: Integer read FNonZeroBitCount;
  end;


////////////////////////////////////////////////////////////////////////////////
//
// 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;

  // 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
                     );


////////////////////////////////////////////////////////////////////////////////
//
// Other functions
//
////////////////////////////////////////////////////////////////////////////////


  // returns temporary name
  function GetTemporaryName(Prefix: String): String;

  function BracketFieldName(name: String): String;

implementation

uses Math, MYLDBExpressions, MYLDBCompression, MYLDBBTree, MYLDBBase;


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBIndexPositionCache
//
////////////////////////////////////////////////////////////////////////////////


//------------------------------------------------------------------------------
// Create
//------------------------------------------------------------------------------
constructor TMYLDBIndexPositionCache.Create;
begin
  Position := TMYLDBKeyPath.Create;
  IndexID := INVALID_OBJECT_ID;
  TableState := -1;
end;// Create


//------------------------------------------------------------------------------
// Destroy
//------------------------------------------------------------------------------
destructor TMYLDBIndexPositionCache.Destroy;
begin
  TMYLDBKeyPath(Position).Free;
end;// Destroy




////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBScanSearchCondition
//
////////////////////////////////////////////////////////////////////////////////


//------------------------------------------------------------------------------
// ClearKeyRecordBuffer
//------------------------------------------------------------------------------
procedure TMYLDBScanSearchCondition.ClearKeyRecordBuffer;
begin
  if (not FExternalKeyRecordBuffer) then
    if (KeyRecordBuffer <> nil) then
      MemoryManager.FreeAndNillMem(KeyRecordBuffer);
end;// ClearKeyRecordBuffer


//------------------------------------------------------------------------------
// Create
//------------------------------------------------------------------------------
constructor TMYLDBScanSearchCondition.Create(ExternalKeyRecordBuffer: Boolean);
begin
  FExternalKeyRecordBuffer := ExternalKeyRecordBuffer;
  KeyRecordBuffer := nil;
  KeyRecordBufferSize := 0;
  IndexID := INVALID_OBJECT_ID;
  Expression := nil;
  CreatedFromExpression := False;
  ParentExpressions := TList.Create;
  ParentExpressionNodes := TList.Create;
  PartialCompare := False;
end;// Create


//------------------------------------------------------------------------------
// Destroy
//------------------------------------------------------------------------------
destructor TMYLDBScanSearchCondition.Destroy;
begin
  ClearKeyRecordBuffer;
  ParentExpressions.Free;
  ParentExpressionNodes.Free;
  inherited;
end;// Destroy


//------------------------------------------------------------------------------
// Assign
//------------------------------------------------------------------------------
procedure TMYLDBScanSearchCondition.Assign(ScanSearchCondition: TMYLDBScanSearchCondition);
var
  i: Integer;
begin
  Condition := ScanSearchCondition.Condition;
  ClearKeyRecordBuffer;
  if (ScanSearchCondition.KeyRecordBuffer <> nil) then
    begin
      KeyRecordBuffer := MemoryManager.AllocMem(ScanSearchCondition.KeyRecordBufferSize);
      Move(ScanSearchCondition.KeyRecordBuffer^, KeyRecordBuffer^, ScanSearchCondition.KeyRecordBufferSize);
    end
  else
    KeyRecordBuffer := nil;
  FExternalKeyRecordBuffer := False;
  KeyRecordBufferSize := ScanSearchCondition.KeyRecordBufferSize;
  KeyFieldCount := ScanSearchCondition.KeyFieldCount;
  IndexID := ScanSearchCondition.IndexID;
  Expression := ScanSearchCondition.Expression;
  CreatedFromExpression := ScanSearchCondition.CreatedFromExpression;
  PartialCompare := ScanSearchCondition.PartialCompare;

  // assign
  ParentExpressions.Clear;
  for i:=0 to ScanSearchCondition.ParentExpressions.Count-1 do
    ParentExpressions.Add(ScanSearchCondition.ParentExpressions[i]);
  // assign
  ParentExpressionNodes.Clear;
  for i:=0 to ScanSearchCondition.ParentExpressionNodes.Count-1 do
    ParentExpressionNodes.Add(ScanSearchCondition.ParentExpressionNodes[i]);
end;// Assign



////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBScanSearchConditionArray
//
////////////////////////////////////////////////////////////////////////////////

//------------------------------------------------------------------------------
// Create
//------------------------------------------------------------------------------
constructor TMYLDBScanSearchConditionArray.Create;
begin
  Items := nil;
  Count := 0;
end;// Create


//------------------------------------------------------------------------------
// Destroy
//------------------------------------------------------------------------------
destructor TMYLDBScanSearchConditionArray.Destroy;
var
  i: Integer;
begin
  for i := 0 to Count-1 do
    Items[i].Free;
  SetLength(Items, 0);
end;// Destroy


//------------------------------------------------------------------------------
// Delete
//------------------------------------------------------------------------------
procedure TMYLDBScanSearchConditionArray.Delete(ItemNo: Integer);
begin
 if (ItemNo < 0) or (ItemNo >= Count) then
  raise EMYLDBException.Create(10413,ErrorLInvalidItemNumber);
 if (Items[ItemNo] = nil) then
  raise EMYLDBException.Create(10414,ErrorLNilPointer);
 Items[ItemNo].Free;
 if (ItemNo < Count - 1) then
  Move(Items[ItemNo+ 1 ],Items[ItemNo],
      (Count - ItemNo-1) * SizeOf(TMYLDBScanSearchCondition));
 Dec(Count);
 SetLength(Items,Count);
end; // Delete


//------------------------------------------------------------------------------
// AddExpression
//------------------------------------------------------------------------------
procedure TMYLDBScanSearchConditionArray.AddExpression(Expression: Pointer);
begin
  SetLength(Items, Count+1);
  Items[Count] := TMYLDBScanSearchCondition.Create(False);
  Items[Count].Expression := Expression;
  Items[Count].Condition := scNone;
  Items[Count].KeyRecordBuffer := nil;
  Items[Count].KeyFieldCount := 0;
  Items[Count].IndexID := INVALID_OBJECT_ID;
  Inc(Count);
end;// AddExpression


//------------------------------------------------------------------------------
// AddCondition
//------------------------------------------------------------------------------
procedure TMYLDBScanSearchConditionArray.AddCondition(
                  ScanSearchCondition:  TMYLDBScanSearchCondition
                             );
begin
  if ((ScanSearchCondition.Expression = nil) and
      (ScanSearchCondition.IndexID = INVALID_ID4)) then
   raise EMYLDBException.Create(10388,ErrorLInvalidScanConditionNoIndex,
      [ScanSearchCondition.IndexID,Count]);
  SetLength(Items, Count+1);
  Items[Count] := TMYLDBScanSearchCondition.Create(False);
  Items[Count].Assign(ScanSearchCondition);
  Inc(Count);
end;// AddCondition


//------------------------------------------------------------------------------
// TryToExtendMultiFieldIndexCondition
//------------------------------------------------------------------------------
procedure TMYLDBScanSearchConditionArray.TryToExtendMultiFieldIndexCondition(
              ConditionNo: Integer; IndexDef: Pointer; Expressions: TList);
var
  bExtendSucceeded: Boolean;
  i: integer;
begin
  if (TMYLDBIndexDef(IndexDef).ColumnCount > 1) then
    begin
      bExtendSucceeded := False;
      repeat
        for i := 0 to Expressions.Count-1 do
          begin
            bExtendSucceeded := TMYLDBExpression(Expressions[i]).ExtendMultiFieldIndexCondition(Items[ConditionNo], IndexDef);
            if (bExtendSucceeded) then
              break;
          end;
      until (not bExtendSucceeded);
    end;
end;// TryToExtendMultiFieldIndexCondition


//------------------------------------------------------------------------------
// CreateIndexScanConditionsFromExpressions
//------------------------------------------------------------------------------
procedure TMYLDBScanSearchConditionArray.CreateIndexScanConditionsFromExpressions(IndexDefs: Pointer; SessionID: TMYLDBSessionID);
var
  i: Integer;
  Expressions: TList;
begin
  // create all possible single-field index scan conditions
  for i := 0 to Count-1 do
    if (Items[i].Expression <> nil) then
      TMYLDBExpression(Items[i].Expression).CreateIndexScanConditions(IndexDefs, Self, SessionID);

  Expressions := TList.Create;
  try
    // collect all expressions
    for i := 0 to Count-1 do
      if (Items[i].Expression <> nil) then
        Expressions.Add(Items[i].Expression);

    if (Expressions.Count > 0) then
      // try to extend multi-field index conditions
      for i := 0 to Count-1 do
        if (Items[i].Expression = nil) then
          TryToExtendMultiFieldIndexCondition(i, TMYLDBIndexDefs(IndexDefs).GetDefByObjectId(Items[i].IndexID), Expressions);
  finally
    Expressions.Free;
  end;
end;// CreateIndexScanConditionsFromExpressions


//------------------------------------------------------------------------------
// RemoveUnusedConditionsCreatedFromExpressions
//------------------------------------------------------------------------------
procedure TMYLDBScanSearchConditionArray.RemoveUnusedConditionsCreatedFromExpressions(
                               var ScanConditionNo,ScanEndConditionNo: Integer);
var
  i: integer;
begin
  i := 0;
  while (i < Count-1) do
    begin
      if not (i in [ScanConditionNo, ScanEndConditionNo]) then
        if (Items[i].CreatedFromExpression) then
          begin
            Delete(i);
            if (ScanConditionNo > i) then
              Dec(ScanConditionNo);
            if (ScanEndConditionNo > i) then
              Dec(ScanEndConditionNo);
            i := 0;
            continue;
          end;
      Inc(i);
    end;
end;// RemoveUnusedConditionsCreatedFromExpressions


//------------------------------------------------------------------------------
// ExtractChosenConditionsFromExpressions
//------------------------------------------------------------------------------
procedure TMYLDBScanSearchConditionArray.ExtractChosenConditionsFromExpressions(ScanConditionNo, ScanEndConditionNo: Integer);
var
  i: Integer;
begin
  for i := 0 to Count-1 do
    if (Items[i].Expression <> nil) then
      TMYLDBExpression(Items[i].Expression).RemoveExtractedNodes(Self,ScanConditionNo,ScanEndConditionNo);
end;// ExtractChosenConditionsFromExpressions


//------------------------------------------------------------------------------
// ReturnExtractedConditionsToExpressions
//------------------------------------------------------------------------------
procedure TMYLDBScanSearchConditionArray.ReturnExtractedConditionsToExpressions(ScanConditionNo, ScanEndConditionNo: Integer);
var
  i,j: Integer;
begin
  for i := 0 to Count-1 do
    if (i in [ScanConditionNo, ScanEndConditionNo]) then
      for j := 0 to Items[i].ParentExpressions.Count-1 do
        TMYLDBExpression(Items[i].ParentExpressions[j]).AddNode(Items[i].ParentExpressionNodes[j]);
end;// ReturnExtractedConditionsToExpressions



////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBIntegerArray
//
////////////////////////////////////////////////////////////////////////////////

//------------------------------------------------------------------------------
// Construct array of specified size
//------------------------------------------------------------------------------
constructor TMYLDBIntegerArray.Create(
  size: Integer;
  DefaultAllocBy: Integer;
  MaximumAllocBy: Integer
  );
begin
 AllocBy := DefaultAllocBy; // default alloc
 deAllocBy := DefaultAllocBy; // default dealloc
 MaxAllocBy := MaximumAllocBy; // max alloc
 AllocItemCount := 0;
 SetSize(size);
end;//TMYLDBIntegerArray.Create


//------------------------------------------------------------------------------
// Destruct array (free mem)
//------------------------------------------------------------------------------
destructor TMYLDBIntegerArray.Destroy;
begin
 Items := nil;
 inherited Destroy;
end;//TMYLDBIntegerArray.Destroy;


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97精品视频在线观看自产线路二| 一区二区三国产精华液| 亚洲色图视频网| 亚洲不卡在线观看| 国产一区二区久久| 91小视频在线免费看| 欧美一区二区三区四区久久| 国产人久久人人人人爽| 亚洲影院理伦片| 国产一区二区三区在线观看精品 | 乱中年女人伦av一区二区| 激情图片小说一区| 色综合久久88色综合天天免费| 日韩午夜激情视频| ㊣最新国产の精品bt伙计久久| 男女男精品网站| 99免费精品在线观看| 欧美一级高清大全免费观看| 亚洲欧洲日本在线| 免费在线观看精品| 色婷婷综合久久久久中文一区二区| 日韩视频国产视频| 亚洲蜜臀av乱码久久精品蜜桃| 精品一区二区影视| 欧洲人成人精品| 久久久久久久久97黄色工厂| 亚洲成人动漫av| 99热国产精品| 国产亚洲精品久| 日本不卡视频一二三区| 91国产成人在线| 国产视频一区在线观看| 蜜臀av性久久久久av蜜臀妖精| 91蜜桃免费观看视频| 欧美色成人综合| 欧美国产精品专区| 在线一区二区三区四区| 久久免费看少妇高潮| 日韩高清在线电影| 在线免费观看成人短视频| 久久久久久综合| 蜜桃久久av一区| 欧美日韩色综合| 亚洲六月丁香色婷婷综合久久| 国产精品一区二区免费不卡 | 午夜久久久久久久久| a级高清视频欧美日韩| 久久蜜桃av一区精品变态类天堂 | 久久一区二区三区国产精品| 视频一区视频二区在线观看| 在线一区二区三区四区五区| 亚洲天堂网中文字| 成人av网站在线观看| 国产欧美一区二区精品婷婷| 精品一区二区三区在线观看| 日韩一区二区三区免费观看| 午夜久久久影院| 欧美性猛交一区二区三区精品| 亚洲欧美日韩精品久久久久| 99久久亚洲一区二区三区青草| 激情六月婷婷综合| 国产亲近乱来精品视频| 成人动漫中文字幕| 久久综合99re88久久爱| 精品国产一二三| 1000精品久久久久久久久| 国产 欧美在线| 中文字幕欧美激情| 成人性色生活片免费看爆迷你毛片| 久久先锋影音av鲁色资源网| 国产最新精品免费| 精品国产乱码久久久久久蜜臀| 日本sm残虐另类| 日韩三级免费观看| 精品午夜久久福利影院| 久久久一区二区三区| 国产丶欧美丶日本不卡视频| 欧美激情一区三区| 播五月开心婷婷综合| 亚洲欧美日韩电影| 欧美性大战xxxxx久久久| 亚洲国产成人porn| 91精品一区二区三区久久久久久| 免费在线观看一区| 26uuu国产电影一区二区| 国产一区二区不卡在线| 国产日韩v精品一区二区| 99久久久久久99| 久久久国产综合精品女国产盗摄| 56国语精品自产拍在线观看| 91精品国产91热久久久做人人| 国产精品成人一区二区三区夜夜夜| www.色精品| 一区二区三区四区不卡视频 | 亚洲欧美在线aaa| 在线免费不卡视频| 日本伊人色综合网| 精品福利一区二区三区| 成av人片一区二区| 一区二区日韩av| 日韩女优制服丝袜电影| 国产**成人网毛片九色| 亚洲精品综合在线| 日韩一区二区电影| 懂色av一区二区在线播放| 一区二区三区av电影| 日韩女优毛片在线| 成人av电影免费在线播放| 亚洲国产视频一区二区| 精品剧情在线观看| jvid福利写真一区二区三区| 亚洲国产综合91精品麻豆| 日韩一区二区三区观看| 99久久精品久久久久久清纯| 天天色天天操综合| 国产亚洲欧美日韩在线一区| 91传媒视频在线播放| 韩国精品主播一区二区在线观看 | 欧美人与禽zozo性伦| 国产一区二区在线视频| 亚洲品质自拍视频网站| 欧美大片国产精品| 一本色道久久加勒比精品 | 2014亚洲片线观看视频免费| 99久久综合国产精品| 日本免费新一区视频| 国产精品久久久久四虎| 日韩一二三四区| 99视频热这里只有精品免费| 美国精品在线观看| 国产精品福利电影一区二区三区四区| 欧美丰满一区二区免费视频 | 亚洲另类中文字| 欧美精品一区二区三区久久久| 欧美专区日韩专区| 成人激情午夜影院| 美女久久久精品| 亚洲一区二区三区四区五区黄| 久久精品一级爱片| 日韩一卡二卡三卡四卡| 欧美午夜在线一二页| 成人动漫在线一区| 国产美女精品人人做人人爽| 日日摸夜夜添夜夜添精品视频| **网站欧美大片在线观看| 久久久久久亚洲综合影院红桃| 在线综合亚洲欧美在线视频| 91福利国产成人精品照片| 成人国产精品免费观看动漫| 韩国女主播成人在线观看| 日韩不卡免费视频| 一区二区三区精密机械公司| 国产精品色一区二区三区| 亚洲精品一线二线三线无人区| 91精品国产黑色紧身裤美女| 色8久久人人97超碰香蕉987| 成人福利在线看| 国产麻豆91精品| 久久99精品国产91久久来源| 免费人成黄页网站在线一区二区| 亚洲一二三区视频在线观看| 亚洲欧美偷拍卡通变态| 亚洲国产激情av| 国产日产欧美一区| 久久久久一区二区三区四区| 日韩欧美国产午夜精品| 日韩一区二区在线观看| 正在播放亚洲一区| 欧美精品vⅰdeose4hd| 欧美久久高跟鞋激| 欧美巨大另类极品videosbest | 亚洲国产va精品久久久不卡综合| 亚洲黄色av一区| 亚洲精选免费视频| 亚洲视频每日更新| 亚洲另类中文字| 精品999久久久| 国产成人午夜视频| 久久久精品免费免费| 精品国产免费视频| 精品欧美乱码久久久久久| 日韩欧美卡一卡二| 精品少妇一区二区三区在线播放 | 日韩avvvv在线播放| 日日摸夜夜添夜夜添国产精品| 日韩av网站免费在线| 蜜桃精品在线观看| 国产在线精品国自产拍免费| 国产一区二区三区观看| 国产成人午夜精品影院观看视频| 国产91高潮流白浆在线麻豆 | 亚洲男人天堂一区| 亚洲国产视频在线| 日本美女一区二区| 精品一区二区三区日韩| 国产盗摄精品一区二区三区在线| 成人综合婷婷国产精品久久免费| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 不卡一区二区在线| 91福利精品第一导航|