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

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

?? myldbtempengine.pas

?? 一個本地database引擎,支持中文T_Sql查詢,兼容DELPHI標準數據庫控件
?? PAS
?? 第 1 頁 / 共 4 頁
字號:
// AddIndex
//------------------------------------------------------------------------------
procedure TMYLDBTemporaryTableData.AddIndex(IndexDef: TMYLDBIndexDef; Cursor: TMYLDBCursor);
begin
  Lock;
  try
    inherited AddIndex(IndexDef, Cursor);
    if (not Cursor.Session.InTransaction) then
      PageManager.ApplyChanges(Cursor.Session.SessionID);
  finally
    Unlock;
  end;
end;// AddIndex


//------------------------------------------------------------------------------
// DeleteIndex
//------------------------------------------------------------------------------
procedure TMYLDBTemporaryTableData.DeleteIndex(IndexID: TMYLDBObjectID; Cursor: TMYLDBCursor);
begin
  Lock;
  try
    inherited DeleteIndex(IndexID, Cursor);
    if (Cursor <> nil) then
      begin
        if (not Cursor.Session.InTransaction) then
          PageManager.ApplyChanges(Cursor.Session.SessionID);
      end
    else
      PageManager.ApplyChanges(SYSTEM_SESSION_ID);
  finally
    Unlock;
  end;
end;// DeleteIndex


//------------------------------------------------------------------------------
// insert record
//------------------------------------------------------------------------------
function TMYLDBTemporaryTableData.InsertRecord(var Cursor: TMYLDBCursor): Boolean;
var RecordID: TMYLDBRecordID;
begin
  if (FRecordManager = nil) then
   raise EMYLDBException.Create(10134,ErrorLNilPointer);
  if (Cursor.CurrentRecordBuffer = nil) then
   raise EMYLDBException.Create(10135,ErrorLNilPointer);
  // add record to first empty space
  try
    Result := FRecordManager.AddRecord(Cursor.Session.SessionID,
                                           Cursor.CurrentRecordBuffer,RecordID);
    Move(RecordID,Cursor.CurrentRecordID,sizeof(Cursor.CurrentRecordID));
  except
    Result := False;
  end;
  if (Result) then
   begin
     if (TMYLDBRecordBitmap(Cursor.RecordBitmap).Active) then
      begin
        if (IsRecordVisible(Cursor)) then
         TMYLDBRecordBitmap(Cursor.RecordBitmap).ShowRecord(Cursor.CurrentRecordID)
        else
         TMYLDBRecordBitmap(Cursor.RecordBitmap).HideRecord(Cursor.CurrentRecordID);
      end;
     FIndexManager.InsertRecord(Cursor);
     Cursor.FirstPosition := False;
     Cursor.LastPosition := False;
     if (not Cursor.Session.InTransaction) then
      FPageManager.ApplyChanges(Cursor.Session.SessionID);
   end;
end; // InsertRecord;


//------------------------------------------------------------------------------
// delete record
//------------------------------------------------------------------------------
function TMYLDBTemporaryTableData.DeleteRecord(Cursor: TMYLDBCursor): Boolean;
begin
 Result := False;
end; // DeleteRecord


//------------------------------------------------------------------------------
// update record
//------------------------------------------------------------------------------
function TMYLDBTemporaryTableData.UpdateRecord(Cursor: TMYLDBCursor): Boolean;
begin
 Result := False;
end; // UpdateRecord


//------------------------------------------------------------------------------
// return record count
//------------------------------------------------------------------------------
function TMYLDBTemporaryTableData.InternalGetRecordCount(Cursor: TMYLDBCursor): TMYLDBRecordNo;
begin
  if (FRecordManager = nil) then
   raise EMYLDBException.Create(10133,ErrorLNilPointer);
  Result := FRecordManager.RecordCount;
end; // GetRecordCount


//------------------------------------------------------------------------------
// move cursor to specified position and set current record id in cursor
//------------------------------------------------------------------------------
procedure TMYLDBTemporaryTableData.InternalSetRecNo(Cursor: TMYLDBCursor; RecNo: TMYLDBRecordNo);
var RecordID: TMYLDBRecordNo;
begin
  if (FRecordManager = nil) then
   raise EMYLDBException.Create(10136,ErrorLNilPointer);
  if (RecNo > 1) then
   RecordID := RecNo-1
  else
   RecordID := 0;
  Move(RecordID,Cursor.CurrentRecordID,sizeof(Cursor.CurrentRecordID));
end; // SetRecNo


//------------------------------------------------------------------------------
// get current record position from cursor
//------------------------------------------------------------------------------
function TMYLDBTemporaryTableData.InternalGetRecNo(Cursor: TMYLDBCursor): TMYLDBRecordNo;
begin
  if (FRecordManager = nil) then
   raise EMYLDBException.Create(10137,ErrorLNilPointer);
  Result := 0;
  Move(Cursor.CurrentRecordID,Result,sizeof(Cursor.CurrentRecordID));
  Inc(Result);
end; // GetRecNo


//---------------------------------------------------------------------------
// write BLOB field to record buffer
//---------------------------------------------------------------------------
procedure TMYLDBTemporaryTableData.WriteBLOBFieldToRecordBuffer(
          Cursor:     TMYLDBCursor;
          FieldNo:    Integer;
          BLOBStream: TMYLDBStream
          );
var
    WriteSize,WriteBytes:     Integer;
    PartialBLOBDescriptor:    TMYLDBPartialTemporaryBLOBDescriptor;
    DiskOffset:               Int64;
begin
 if (FBLOBFile = nil) then
  raise EMYLDBException.Create(10144,ErrorLNilPointer);
 if (BLOBStream.Modified) then
  begin
   if (BLOBStream.Size = 0) then
    begin
     // empty stream
     SetNullFlag(True,FieldNo,Cursor.CurrentRecordBuffer);
    end
   else
    begin
     PartialBLOBDescriptor.NumBlocks := TMYLDBCompressedBLOBStream(
        TMYLDBLocalBLOBStream(BLOBStream).TemporaryStream).BLOBDescriptor.NumBlocks;
     PartialBLOBDescriptor.UncompressedSize := TMYLDBCompressedBLOBStream(
        TMYLDBLocalBLOBStream(BLOBStream).TemporaryStream).BLOBDescriptor.UncompressedSize;
     PartialBLOBDescriptor.CompressedSize := TMYLDBCompressedBLOBStream(
        TMYLDBLocalBLOBStream(BLOBStream).TemporaryStream).CompressedSize;
     SetStreamPosition(FBLOBFile,FBLOBFile.Size,10422);
     DiskOffset := FBLOBFile.Position;
     // save blob descriptor
     WriteSize := sizeof(PartialBLOBDescriptor);
     WriteBytes := FBLOBFile.Write(PartialBLOBDescriptor,WriteSize);
     if (WriteBytes <> WriteSize) then
      raise EMYLDBException.Create(10145,ErrorLCannotWriteToStream,
        [DiskOffset,FBLOBFile.Size,WriteSize,WriteBytes]);
     // save compressed data to blob file
     TMYLDBStream(TMYLDBCompressedBLOBStream(TMYLDBLocalBLOBStream(BLOBStream).TemporaryStream).
        CompressedStream).SaveToStream(FBLOBFile);
     // store offset of blob descriptor in blob file to record buffer
     Move(DiskOffset,PChar(Cursor.CurrentRecordBuffer +
      FieldManager.FieldDefs[FieldNo].MemoryOffset)^,sizeof(DiskOffset));
     SetNullFlag(False,FieldNo,Cursor.CurrentRecordBuffer);
    end; // not empty stream
  end; // Modified
end; // WriteBLOBFieldToRecordBuffer


//---------------------------------------------------------------------------
// create BLOB stream
//---------------------------------------------------------------------------
function TMYLDBTemporaryTableData.InternalCreateBlobStream(
          Cursor:   TMYLDBCursor;
          ToInsert: Boolean;
          FieldNo:  Integer;
          OpenMode: TMYLDBBLOBOpenMode
          ): TMYLDBStream;
var TempStream:             TMYLDBTemporaryStream;
    CompressedStream:       TMYLDBCompressedBLOBStream;
    Offset:                 Integer;
    DiskOffset,OldPos:      Int64;
    ReadBytes,ReadSize:     Integer;
    BLOBDescriptor:         TMYLDBBLOBDescriptor;
    PartialBLOBDescriptor:  TMYLDBPartialTemporaryBLOBDescriptor;
begin
 if (FBLOBFile = nil) then
  raise EMYLDBException.Create(10140,ErrorLNilPointer);
 BLOBDescriptor.CompressionAlgorithm :=
     Byte(FieldManager.FieldDefs[FieldNo].BLOBCompressionAlgorithm);
 BLOBDescriptor.CompressionMode := FieldManager.FieldDefs[FieldNo].BLOBCompressionMode;
 BLOBDescriptor.BlockSize := FieldManager.FieldDefs[FieldNo].BLOBBlockSize;
 BLOBDescriptor.StartPosition := 0;
 TempStream := TMYLDBTemporaryStream.Create(FDisableTempFiles);
 // create new compressed stream
 if ((ToInsert) or (OpenMode = bomWrite) or
     (CheckNullFlag(FieldNo,Cursor.CurrentRecordBuffer))) then
  begin
   // empty stream
   BLOBDescriptor.NumBlocks := 0;
   BLOBDescriptor.UncompressedSize := 0;
   CompressedStream := TMYLDBCompressedBLOBStream.Create(TempStream,
    BLOBDescriptor,True);
   Result := TMYLDBLocalBLOBStream.Create(CompressedStream,Cursor,OpenMode,FieldNo);
  end // empty stream
 else
  begin
   // copy value from TableData
   Offset := FieldManager.FieldDefs[FieldNo].MemoryOffset;
   // offset to blob field data
   Move(PChar(Cursor.CurrentRecordBuffer + Offset)^,DiskOffset,Sizeof(DiskOffset));
   OldPos := FBLOBFile.Position;

   // set position in BLOB file
   FBLOBFile.Position := DiskOffset;
   if (FBLOBFile.Position <> DiskOffset) then
     raise EMYLDBException.Create(10141,ErrorLCannotSetPosition,
       [DiskOffset,OldPos,FBLOBFile.Size]);

   // read partial BLOB descriptor
   OldPos := FBLOBFile.Position;
   ReadSize := sizeof(TMYLDBPartialTemporaryBLOBDescriptor);
   ReadBytes := FBLOBFile.Read(PartialBLOBDescriptor,ReadSize);
   if (ReadBytes <> ReadSize) then
    raise EMYLDBException.Create(10142,ErrorLCannotReadFromStream,
      [OldPos,FBLOBFile.Size,ReadSize,ReadBytes]);

   // read compressed blob data
   TempStream.LoadFromStreamWithPosition(FBLOBFile,FBLOBFile.Position,
      PartialBLOBDescriptor.CompressedSize);

   // copy partial blob descriptor
   BLOBDescriptor.NumBlocks := PartialBLOBDescriptor.NumBlocks;
   BLOBDescriptor.UncompressedSize := PartialBLOBDescriptor.UncompressedSize;
   CompressedStream := TMYLDBCompressedBLOBStream.Create(TempStream,
    BLOBDescriptor,False);
   Result := TMYLDBLocalBLOBStream.Create(CompressedStream,Cursor,OpenMode,FieldNo);
  end; // copy value from TableData
end; // InternalCreateBlobStream


//------------------------------------------------------------------------------
// GetDirectBlobData
//------------------------------------------------------------------------------
procedure TMYLDBTemporaryTableData.GetDirectBlobData(
              Cursor:     TMYLDBCursor;
              FieldNo:    Integer;
              RecordBuffer: TMYLDBRecordBuffer;
              var BLOBDescriptor: TMYLDBPartialTemporaryBLOBDescriptor;
              var pBlobData: PChar);
var
    Offset:                 Integer;
    DiskOffset,OldPos:      Int64;
    ReadBytes,ReadSize:     Integer;
begin
 if (CheckNullFlag(FieldNo,RecordBuffer)) then
  begin
   // empty stream
   BLOBDescriptor.NumBlocks := 0;
   BLOBDescriptor.UncompressedSize := 0;
   BLOBDescriptor.CompressedSize := 0;
   pBlobData := nil;
  end // empty stream
 else
  begin
   // copy value from TableData
   Offset := FieldManager.FieldDefs[FieldNo].MemoryOffset;
   // offset to blob field data
   Move(PChar(RecordBuffer + Offset)^,DiskOffset,Sizeof(DiskOffset));
   OldPos := FBLOBFile.Position;

   // set position in BLOB file
   FBLOBFile.Position := DiskOffset;
   if (FBLOBFile.Position <> DiskOffset) then
     raise EMYLDBException.Create(10509,ErrorLCannotSetPosition,
       [DiskOffset,OldPos,FBLOBFile.Size]);

   // read partial BLOB descriptor
   OldPos := FBLOBFile.Position;
   ReadSize := sizeof(TMYLDBPartialTemporaryBLOBDescriptor);
   ReadBytes := FBLOBFile.Read(BLOBDescriptor,ReadSize);
   if (ReadBytes <> ReadSize) then
    raise EMYLDBException.Create(10510,ErrorLCannotReadFromStream,
      [OldPos,FBLOBFile.Size,ReadSize,ReadBytes]);

   // read compressed blob data
   pBlobData := MemoryManager.GetMem(BLOBDescriptor.CompressedSize);
   FBLOBFile.ReadBuffer(pBlobData^, BLOBDescriptor.CompressedSize);
   FBLOBFile.Position := OldPos;
  end; // copy value from TableData
end;// GetDirectBlobData


//------------------------------------------------------------------------------
// SetDirectBlobData
//------------------------------------------------------------------------------
procedure TMYLDBTemporaryTableData.SetDirectBlobData(
              Cursor:     TMYLDBCursor;
              FieldNo:    Integer;
              RecordBuffer: TMYLDBRecordBuffer;
              var BLOBDescriptor: TMYLDBPartialTemporaryBLOBDescriptor;
              var pBlobData: PChar);
var
    WriteSize,WriteBytes:     Integer;
    DiskOffset:               Int64;
begin
 if (FBLOBFile = nil) then
  raise EMYLDBException.Create(10506,ErrorLNilPointer);
 if (BLOBDescriptor.UncompressedSize = 0) then
   SetNullFlag(True,FieldNo,Cursor.CurrentRecordBuffer)
 else
    begin
     SetStreamPosition(FBLOBFile,FBLOBFile.Size,10507);
     DiskOffset := FBLOBFile.Position;
     // save blob descriptor
     WriteSize := sizeof(BLOBDescriptor);
     WriteBytes := FBLOBFile.Write(BLOBDescriptor,WriteSize);
     if (WriteBytes <> WriteSize) then
      raise EMYLDBException.Create(10508,ErrorLCannotWriteToStream,
        [DiskOffset,FBLOBFile.Size,WriteSize,WriteBytes]);
     // save compressed data to blob file
     FBLOBFile.WriteBuffer(pBlobData^,BLOBDescriptor.CompressedSize);
     // store offset of blob descriptor in blob file to record buffer
     Move(DiskOffset,PChar(Cursor.CurrentRecordBuffer +
      FieldManager.FieldDefs[FieldNo].MemoryOffset)^,sizeof(DiskOffset));
     SetNullFlag(False,FieldNo,Cursor.CurrentRecordBuffer);
    end;
end;// SetDirectBlobData


//------------------------------------------------------------------------------
// FreeDirectBlobData
//------------------------------------------------------------------------------
procedure TMYLDBTemporaryTableData.FreeDirectBlobData(
              Cursor:     TMYLDBCursor;
              FieldNo:    Integer;
              RecordBuffer: TMYLDBRecordBuffer;
              var BLOBDescriptor: TMYLDBPartialTemporaryBLOBDescriptor;
              var pBlobData: PChar);
begin
  if (pBlobData <> nil) then
    MemoryManager.FreeAndNillMem(pBlobData);
end;// FreeDirectBlobData

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品欧美黑人一区二区三区| 91精品在线一区二区| 欧美系列在线观看| 精品免费视频.| 亚洲成人综合网站| 国产一区二区三区久久久| 欧美在线免费视屏| 日本一区二区在线不卡| 麻豆成人综合网| 欧美日韩国产三级| 亚洲欧美区自拍先锋| 韩国毛片一区二区三区| 51精品久久久久久久蜜臀| 亚洲免费伊人电影| 97超碰欧美中文字幕| 中文字幕免费在线观看视频一区| 五月激情六月综合| 欧美日韩免费高清一区色橹橹| 中文在线资源观看网站视频免费不卡| 性感美女久久精品| 欧美亚洲国产bt| 一二三四社区欧美黄| 成人性视频网站| 国产欧美日韩综合| 国产成人在线视频播放| 精品国产乱码久久久久久1区2区| 日本sm残虐另类| 制服丝袜亚洲播放| 日本亚洲天堂网| 欧美一卡二卡三卡四卡| 五月综合激情网| 91精品久久久久久久久99蜜臂| 亚洲电影第三页| 欧美日韩国产区一| 日本视频一区二区| 欧美tickling挠脚心丨vk| 国内久久精品视频| 中文字幕久久午夜不卡| 成人黄动漫网站免费app| 欧美高清在线精品一区| 成人午夜视频福利| 亚洲日本一区二区| 欧美影片第一页| 香蕉影视欧美成人| 精品日韩99亚洲| 床上的激情91.| 伊人婷婷欧美激情| 91精品国产欧美一区二区18 | 97久久精品人人做人人爽| 国产精品久久久久久久久动漫 | 精品一区二区三区视频| 久久久久久久av麻豆果冻| 不卡一区在线观看| 亚洲综合一二区| 日韩视频免费观看高清完整版 | 免费不卡在线视频| 国产精品午夜在线观看| 色综合天天在线| 亚洲高清免费视频| 久久精品水蜜桃av综合天堂| 成人免费观看av| 夜夜精品视频一区二区| 欧美精品电影在线播放| 日本欧美一区二区三区乱码| 成人网在线免费视频| 亚洲欧美在线观看| 欧美日韩综合在线免费观看| 日韩综合小视频| 国产午夜三级一区二区三| 盗摄精品av一区二区三区| 综合久久国产九一剧情麻豆| 一级特黄大欧美久久久| 一区二区在线观看av| 国产精品传媒入口麻豆| 国产大陆精品国产| 国产精品水嫩水嫩| 欧洲视频一区二区| 麻豆国产一区二区| 国产精品女主播av| 欧美裸体bbwbbwbbw| 国产自产高清不卡| 亚洲靠逼com| 欧美视频第二页| 成人小视频免费观看| 一区二区三区日韩精品视频| 欧美一级在线观看| www.欧美.com| 日本成人在线一区| 国产精品久久777777| 欧美久久一二区| 国产乱对白刺激视频不卡| 五月婷婷激情综合| 国产精品久久久久婷婷二区次| 欧美日韩第一区日日骚| 91在线视频观看| 久久精品国产澳门| 亚洲欧美日韩国产另类专区| 在线电影欧美成精品| 成人av网站免费观看| 日韩高清一区在线| 2023国产一二三区日本精品2022| 色综合天天综合色综合av| 国产最新精品免费| 亚洲二区在线观看| 国产精品国产自产拍在线| 欧美一区二区人人喊爽| 色综合久久久久| 国产激情视频一区二区三区欧美| 亚洲福利视频导航| 国产欧美一区二区精品性色| 久久影院午夜片一区| 欧美精品在线观看一区二区| www.亚洲人| 国产成人精品三级| 精品一区二区日韩| 青青青伊人色综合久久| 中文字幕免费不卡在线| 欧美丰满美乳xxx高潮www| 一本久久a久久免费精品不卡| 国产精品1024| 精品一区免费av| 久久精品免费观看| 麻豆91精品91久久久的内涵| 亚洲福利一区二区三区| 久久综合成人精品亚洲另类欧美| 欧美精品一区二区三区视频| 欧美精选在线播放| 欧美日韩国产高清一区| 日韩精品一级中文字幕精品视频免费观看 | 五月激情综合网| 国产日韩欧美高清| 国产精品色哟哟网站| 精品国产一区二区三区不卡 | 国内外成人在线视频| 国产一区二区久久| 国产黄人亚洲片| 91理论电影在线观看| 99久久国产综合精品色伊| 91黄色免费网站| 欧美巨大另类极品videosbest | 国产精品国产三级国产aⅴ中文 | 日韩一区二区在线看| 日韩免费在线观看| 亚洲欧美日韩一区二区三区在线观看| 伊人开心综合网| 天使萌一区二区三区免费观看| 美洲天堂一区二卡三卡四卡视频| 美女精品自拍一二三四| 成人性生交大片免费看在线播放| youjizz久久| 日韩美女视频在线| 精品黑人一区二区三区久久| 亚洲欧洲www| 另类欧美日韩国产在线| 国产一区免费电影| 在线观看视频一区二区欧美日韩| 欧美日韩精品高清| 国产欧美精品一区二区三区四区 | 337p亚洲精品色噜噜| 69av一区二区三区| 国产日产欧美一区二区视频| 亚洲同性gay激情无套| 久久国产精品99久久人人澡| 国产一区 二区 三区一级| 91免费观看国产| 欧美一二区视频| 国产人伦精品一区二区| 亚洲精品日产精品乱码不卡| 天天亚洲美女在线视频| 国产一区二区三区免费在线观看| 91亚洲精品乱码久久久久久蜜桃| 欧美日韩久久一区二区| 久久精品人人爽人人爽| 国产精品久久久久影院色老大| 午夜久久电影网| 成人少妇影院yyyy| 欧美日韩国产色站一区二区三区| 久久天堂av综合合色蜜桃网| 亚洲天堂精品在线观看| 爽好久久久欧美精品| 在线观看av不卡| 国产欧美一区二区精品秋霞影院| 亚洲国产精品天堂| proumb性欧美在线观看| 88在线观看91蜜桃国自产| 日韩精品一区二区三区在线| 亚洲三级电影全部在线观看高清| 国产99久久久久| 日韩欧美在线网站| 天堂va蜜桃一区二区三区漫画版| 不卡的av中国片| 久久综合九色综合欧美98| 香蕉久久一区二区不卡无毒影院| 成人综合日日夜夜| 精品久久久久久久久久久院品网| 亚洲一级二级在线| 99亚偷拍自图区亚洲| 中文字幕欧美激情| 成人性生交大片免费看视频在线 | 久草这里只有精品视频|