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

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

?? myldbmemengine.pas

?? 一個(gè)本地database引擎,支持中文T_Sql查詢,兼容DELPHI標(biāo)準(zhǔn)數(shù)據(jù)庫控件
?? PAS
?? 第 1 頁 / 共 5 頁
字號(hào):
         NavigationInfo.FirstPosition := False;
         repeat
          ClearBLOBFieldsInRecordBuffer(NavigationInfo.RecordBuffer);
          FRecordManager.GetRecordBuffer(SYSTEM_SESSION_ID, NavigationInfo);
         until (NavigationInfo.GetRecordResult <> grrOK);
        end;
     finally
      MemoryManager.FreeAndNillMem(NavigationInfo.RecordBuffer);
     end;
    end;
 if (FRecordManager <> nil) then
  FRecordManager.Empty(SYSTEM_SESSION_ID);

 FPageManager.ApplyChanges(SYSTEM_SESSION_ID);
end; // EmptyTable


//------------------------------------------------------------------------------
// open table
//------------------------------------------------------------------------------
procedure TMYLDBMemoryTableData.OpenTable(Cursor: TMYLDBCursor);
begin
 TableName := Cursor.TableName;
 inherited OpenTable(Cursor);
end;// OpenTable


//------------------------------------------------------------------------------
// close table
//------------------------------------------------------------------------------
procedure TMYLDBMemoryTableData.CloseTable(Cursor: TMYLDBCursor);
begin
 inherited CloseTable(Cursor);
end;// CloseTable


//------------------------------------------------------------------------------
// AddIndex
//------------------------------------------------------------------------------
procedure TMYLDBMemoryTableData.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 TMYLDBMemoryTableData.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


//------------------------------------------------------------------------------
// Write BLOB Field To Record Buffer
//------------------------------------------------------------------------------
procedure TMYLDBMemoryTableData.WriteBLOBFieldToRecordBuffer(
              Cursor:     TMYLDBCursor;
              FieldNo:    Integer;
              BLOBStream: TMYLDBStream
              );
var Buffer:                   PChar;
    BufferSize,Offset:        Integer;
    ReadBytes:                Integer;
begin
 Lock;
 try
   Buffer := Cursor.CurrentRecordBuffer;
   if (BLOBStream.Modified) then
    begin
     if (BLOBStream.Size = 0) then
      begin
       // empty stream
       ClearBLOBFieldInRecordBuffer(Buffer,FieldNo);
       Buffer := nil;
       Move(Buffer,PChar(Cursor.CurrentRecordBuffer +
        FieldManager.FieldDefs[FieldNo].MemoryOffset)^,sizeof(Buffer));
       SetNullFlag(True,FieldNo,Cursor.CurrentRecordBuffer);
      end
     else
      begin
       ClearBLOBFieldInRecordBuffer(Buffer,FieldNo);
       Offset := sizeof(TMYLDBPartialBLOBDescriptor);
       BufferSize := Integer(TMYLDBCompressedBLOBStream(
          TMYLDBLocalBLOBStream(BLOBStream).TemporaryStream).CompressedStream.Size) +
          Offset;
       Buffer := MemoryManager.GetMem(BufferSize);
       PMYLDBPartialBLOBDescriptor(Buffer)^.NumBlocks := TMYLDBCompressedBLOBStream(
          TMYLDBLocalBLOBStream(BLOBStream).TemporaryStream).BLOBDescriptor.NumBlocks;
       PMYLDBPartialBLOBDescriptor(Buffer)^.UncompressedSize := TMYLDBCompressedBLOBStream(
          TMYLDBLocalBLOBStream(BLOBStream).TemporaryStream).BLOBDescriptor.UncompressedSize;
       TMYLDBCompressedBLOBStream(
          TMYLDBLocalBLOBStream(BLOBStream).TemporaryStream).CompressedStream.
          Position := 0;

       ReadBytes := TMYLDBCompressedBLOBStream(
          TMYLDBLocalBLOBStream(BLOBStream).TemporaryStream).CompressedStream.
          Read(PChar(Buffer + Offset)^,(BufferSize - Offset));

       if (ReadBytes <> (BufferSize - Offset)) then
        begin
          MemoryManager.FreeAndNillMem(Buffer);
          raise EMYLDBException.Create(10117,ErrorLCannotReadFromStream,
          [0,(BufferSize - Offset),(BufferSize - Offset),ReadBytes]);
        end;

       //Move(Buffer,PChar(Cursor.CurrentRecordBuffer +
       //  FieldManager.FieldDefs[FieldNo].MemoryOffset)^, sizeof(Buffer));
       PCardinal(Cursor.CurrentRecordBuffer + FieldManager.FieldDefs[FieldNo].MemoryOffset)^ := Cardinal(Buffer);

       SetNullFlag(False,FieldNo,Cursor.CurrentRecordBuffer);
      end; // not empty stream
    end; // Modified
 finally
  Unlock;
 end;
end; // WriteBLOBFieldToRecordBuffer


//------------------------------------------------------------------------------
// create blob stream
//------------------------------------------------------------------------------
procedure TMYLDBMemoryTableData.ClearBLOBFieldInRecordBuffer(
              RecordBuffer: TMYLDBRecordBuffer;
              FieldNo:      Integer);
var Buffer: PChar;
begin
 Lock;
 try
   if (FFieldManager.BlobFieldsPresent) then
    begin
     // check null
     if (not ((PByte(RecordBuffer + (FieldNo div 8))^) and
            (1 shl (FieldNo mod 8)) <> 0)) then
      begin
       Move(PChar(RecordBuffer +
         FieldManager.FieldDefs[FieldNo].MemoryOffset)^,Buffer,sizeof(Buffer));
       if (Buffer = nil) then
        raise EMYLDBException.Create(10118,ErrorLNilPointer);
       MemoryManager.FreeAndNillMem(Buffer);

       // set null
       PByte(RecordBuffer + (FieldNo div 8))^ := PByte(RecordBuffer + (FieldNo div 8))^ or
        (1 shl (FieldNo mod 8));
      end;
    end;
 finally
  Unlock;
 end;
end; // ClearBLOBFieldInRecordBuffer


//------------------------------------------------------------------------------
// create blob stream
//------------------------------------------------------------------------------
function TMYLDBMemoryTableData.InternalCreateBlobStream(
              Cursor:   TMYLDBCursor;
              ToInsert: Boolean;
              FieldNo:  Integer;
              OpenMode: TMYLDBBLOBOpenMode
              ): TMYLDBStream;
var
    TempStream:             TMYLDBTemporaryStream;
    CompressedStream:       TMYLDBCompressedBLOBStream;
    Buffer:                 PChar;
    Offset,BufferSize:      Integer;
    BLOBDescriptor:         TMYLDBBLOBDescriptor;
begin
 Lock;
 try
   Result := nil;
   BLOBDescriptor.CompressionAlgorithm :=
       Byte(FieldManager.FieldDefs[FieldNo].BLOBCompressionAlgorithm);
   BLOBDescriptor.CompressionMode := FieldManager.FieldDefs[FieldNo].BLOBCompressionMode;
   BLOBDescriptor.BlockSize := FieldManager.FieldDefs[FieldNo].BLOBBlockSize;
   if (BLOBDescriptor.BlockSize = 0) then
    raise EMYLDBException.Create(10420,ErrorLZeroBlockSizeIsNotAllowed);
   BLOBDescriptor.StartPosition := 0;
   TempStream := TMYLDBTemporaryStream.Create(FDisableTempFiles);
   // create new compressed stream
   if ((ToInsert and (OpenMode = bomWrite)) or (OpenMode = bomWrite) or
       (Cursor.CurrentRecordBuffer = nil) 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;
     // get pointer to memory buffer with blob stream content

     //Move(PChar(Cursor.CurrentRecordBuffer + Offset)^,Buffer,Sizeof(Buffer));
     Buffer := PChar(PCardinal(Cursor.CurrentRecordBuffer + Offset)^);

     if (Buffer = nil) then
      raise EMYLDBException.Create(10112,ErrorLNilPointer);
     // creating source memory stream
     Offset := sizeof(TMYLDBPartialBLOBDescriptor);
     BufferSize := MemoryManager.GetMemoryBufferSize(Buffer) - Offset;
     // copy partial blob descriptor
     BLOBDescriptor.NumBlocks := PMYLDBPartialBLOBDescriptor(Buffer)^.NumBlocks;
     BLOBDescriptor.UncompressedSize := PMYLDBPartialBLOBDescriptor(Buffer)^.UncompressedSize;
     TempStream.Write(PChar(Buffer + Offset)^,BufferSize);
     TempStream.Position := 0;
     CompressedStream := TMYLDBCompressedBLOBStream.Create(TempStream,
      BLOBDescriptor,False);
     Result := TMYLDBLocalBLOBStream.Create(CompressedStream,Cursor,OpenMode,FieldNo);
    end; // copy value from TableData
 finally
  Unlock;
 end;
end; // InternalCreateBlobStream


//------------------------------------------------------------------------------
// GetDirectBlobData
//------------------------------------------------------------------------------
procedure TMYLDBMemoryTableData.GetDirectBlobData(
              Cursor:     TMYLDBCursor;
              FieldNo:    Integer;
              RecordBuffer: TMYLDBRecordBuffer;
              var BLOBDescriptor: TMYLDBPartialTemporaryBLOBDescriptor;
              var pBlobData: PChar);
var
    Buffer:                 PChar;
    Offset,BufferSize:      Integer;
begin
 Lock;
 try
   if (CheckNullFlag(FieldNo,RecordBuffer)) then
    begin
     BLOBDescriptor.NumBlocks := 0;
     BLOBDescriptor.UncompressedSize := 0;
     BLOBDescriptor.CompressedSize := 0;
     pBlobData := nil;
    end
   else
    begin
     // copy value from TableData
     Offset := FieldManager.FieldDefs[FieldNo].MemoryOffset;
     // get pointer to memory buffer with blob stream content
     Buffer := PChar(PCardinal(RecordBuffer + Offset)^);
     if (Buffer = nil) then
      raise EMYLDBException.Create(10511,ErrorLNilPointer);
     // creating source memory stream
     Offset := sizeof(TMYLDBPartialBLOBDescriptor);
     BufferSize := MemoryManager.GetMemoryBufferSize(Buffer) - Offset;
     // copy partial blob descriptor
     BLOBDescriptor.NumBlocks := PMYLDBPartialBLOBDescriptor(Buffer)^.NumBlocks;
     BLOBDescriptor.UncompressedSize := PMYLDBPartialBLOBDescriptor(Buffer)^.UncompressedSize;
     BLOBDescriptor.CompressedSize := BufferSize;
     // get blob data
     pBlobData := MemoryManager.GetMem(BufferSize);
     Move(PChar(Buffer + Offset)^,pBlobData^,BufferSize);
    end; // copy value from TableData
 finally
  Unlock;
 end;
end;// GetDirectBlobData


//------------------------------------------------------------------------------
// SetDirectBlobData
//------------------------------------------------------------------------------
procedure TMYLDBMemoryTableData.SetDirectBlobData(
              Cursor:     TMYLDBCursor;
              FieldNo:    Integer;
              RecordBuffer: TMYLDBRecordBuffer;
              var BLOBDescriptor: TMYLDBPartialTemporaryBLOBDescriptor;
              var pBlobData: PChar);
var
    Buffer: PChar;
    BufferSize,Offset: Integer;
begin
 Lock;
 try
   if (BLOBDescriptor.CompressedSize = 0) then
    begin
     // empty stream
     ClearBLOBFieldInRecordBuffer(RecordBuffer,FieldNo);
     Buffer := nil;
     Move(Buffer,PChar(RecordBuffer +
      FieldManager.FieldDefs[FieldNo].MemoryOffset)^,sizeof(Buffer));
     SetNullFlag(True,FieldNo,RecordBuffer);
    end
   else
    begin
     ClearBLOBFieldInRecordBuffer(RecordBuffer,FieldNo);
     Offset := sizeof(TMYLDBPartialBLOBDescriptor);
     BufferSize := BLOBDescriptor.CompressedSize + Offset;
     Buffer := MemoryManager.GetMem(BufferSize);
     PMYLDBPartialBLOBDescriptor(Buffer)^.NumBlocks := BLOBDescriptor.NumBlocks;
     PMYLDBPartialBLOBDescriptor(Buffer)^.UncompressedSize := BLOBDescriptor.UncompressedSize;
     Move(pBlobData^,PChar(Buffer + Offset)^,(BufferSize - Offset));
     PCardinal(RecordBuffer + FieldManager.FieldDefs[FieldNo].MemoryOffset)^ := Cardinal(Buffer);
     SetNullFlag(False,FieldNo,RecordBuffer);
    end; // not empty stream
 finally
  Unlock;
 end;
end;// SetDirectBlobData


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


//------------------------------------------------------------------------------
// insert record
//-----------------------------------------------------

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆swag| 毛片av一区二区| 视频一区二区中文字幕| 日本不卡一区二区| 国产高清亚洲一区| 91在线国产福利| 成人伦理片在线| 在线免费视频一区二区| 欧美日韩在线三区| 日韩欧美视频一区| 精品国产污污免费网站入口 | 欧美不卡视频一区| 日韩你懂的在线观看| 欧美tickling挠脚心丨vk| 日韩一级二级三级| 国产欧美日韩三级| 亚洲高清一区二区三区| 精品一区二区三区免费毛片爱| 国产精品一卡二卡| 色国产综合视频| 日韩欧美国产一区二区三区| 国产欧美久久久精品影院| 亚洲免费伊人电影| 日本aⅴ精品一区二区三区| 国产老妇另类xxxxx| 91丨九色丨蝌蚪富婆spa| 这里是久久伊人| 国产精品免费网站在线观看| 亚洲国产精品久久人人爱蜜臀| 日韩黄色片在线观看| 国产精品一二三四| 91丨porny丨首页| 欧美日韩精品免费观看视频| 日韩视频免费观看高清完整版| 中文字幕二三区不卡| 亚洲成av人影院| 国产一区啦啦啦在线观看| 一本大道久久精品懂色aⅴ | 日本成人超碰在线观看| 成人av午夜电影| 91精品国产一区二区三区| 亚洲精品一区二区三区99| 亚洲综合色视频| 粉嫩av一区二区三区| 欧洲一区二区av| 久久精品欧美一区二区三区不卡| 久久天天做天天爱综合色| 久久99精品国产麻豆婷婷洗澡| 91在线观看高清| 欧美精品一区二区高清在线观看| 玉足女爽爽91| 成人激情动漫在线观看| 欧美一级在线免费| 中文字幕一区二区三区在线不卡| 青青草视频一区| 欧美在线视频日韩| 国产精品美女久久久久aⅴ国产馆| 肉丝袜脚交视频一区二区| www.一区二区| 久久久蜜桃精品| 热久久一区二区| 色综合天天综合狠狠| 久久久综合激的五月天| 亚洲人亚洲人成电影网站色| 九九**精品视频免费播放| 欧美日韩免费一区二区三区 | 亚洲另类在线视频| 高清成人免费视频| www国产亚洲精品久久麻豆| 亚洲18女电影在线观看| 99v久久综合狠狠综合久久| 国产日韩精品一区二区三区| 视频在线观看91| 成人av高清在线| 日本一区二区三区在线观看| 精品中文av资源站在线观看| 51精品秘密在线观看| 亚洲一区二区五区| 99re这里只有精品首页| 日本一区二区不卡视频| 国产高清精品网站| 26uuu精品一区二区在线观看| 蜜臀精品久久久久久蜜臀| 欧美日韩成人综合天天影院 | 亚洲成在线观看| 色综合久久88色综合天天| 国产偷国产偷精品高清尤物| 韩日精品视频一区| www亚洲一区| 国产精品77777| 国产女人aaa级久久久级| 国产激情偷乱视频一区二区三区| www国产成人| 国产美女精品人人做人人爽 | 有坂深雪av一区二区精品| 色哟哟日韩精品| 亚洲免费观看高清完整| 91影视在线播放| 亚洲精品五月天| 欧美伊人精品成人久久综合97| 亚洲日本韩国一区| 欧美色成人综合| 日韩精品一二区| 欧美一区二区三级| 精品一区二区三区在线播放| 久久久三级国产网站| 成人激情av网| 亚洲综合免费观看高清在线观看| 欧美日韩在线三级| 男人的天堂久久精品| 精品久久久久久综合日本欧美 | 精品久久久久99| 国产精品 日产精品 欧美精品| 国产精品久久久久影院| 色综合久久六月婷婷中文字幕| 亚洲丶国产丶欧美一区二区三区| 欧美一区二区三区四区在线观看 | 精品国产乱码久久久久久夜甘婷婷| 国产在线不卡一卡二卡三卡四卡| 日本一区二区三区电影| 色综合一区二区| 日本va欧美va欧美va精品| 久久精品网站免费观看| 色婷婷亚洲精品| 免费黄网站欧美| 欧美激情一区二区在线| 色婷婷精品大在线视频| 免费观看30秒视频久久| 久久久www成人免费毛片麻豆 | 日本一区二区三区在线不卡| 欧美中文字幕不卡| 韩国精品一区二区| 亚洲免费观看高清完整版在线 | 国产精品综合二区| 日韩美女久久久| 日韩亚洲欧美综合| 不卡av电影在线播放| 亚洲成人午夜电影| 国产日韩欧美精品一区| 91福利精品第一导航| 亚洲一区二区三区在线看| 日韩免费成人网| 成人久久视频在线观看| 中文字幕在线视频一区| 欧美日韩美少妇 | av一区二区三区在线| 一区二区三区在线观看动漫| 日韩精品资源二区在线| 成人小视频免费在线观看| 亚洲综合免费观看高清在线观看| 亚洲精品一区二区三区在线观看 | 成人免费高清视频在线观看| 伊人开心综合网| 欧美一区午夜视频在线观看| www.成人在线| 日韩中文字幕一区二区三区| 欧美激情中文字幕| 欧美高清你懂得| 国产精品一区二区果冻传媒| 亚洲欧美成人一区二区三区| 国产亚洲一区二区在线观看| 欧美日韩在线精品一区二区三区激情| 国产精品原创巨作av| 亚洲妇熟xx妇色黄| 国产精品成人免费精品自在线观看 | 国产精品国产自产拍高清av王其 | 色狠狠色狠狠综合| 国产麻豆视频一区| 免费观看日韩av| 一区二区三区四区激情| 国产欧美日本一区二区三区| 日韩区在线观看| 欧美日韩一级大片网址| 成人深夜福利app| 国产一区二区三区精品欧美日韩一区二区三区 | 一本色道久久加勒比精品| 美国十次综合导航| 国产精品久久综合| 欧美日韩精品一二三区| 色爱区综合激月婷婷| 国产成人在线电影| 蜜臀av性久久久久蜜臀aⅴ| 一二三区精品视频| 亚洲欧洲综合另类在线| 亚洲国产高清aⅴ视频| 久久亚洲一区二区三区明星换脸| 日韩视频免费观看高清完整版在线观看 | 欧美性淫爽ww久久久久无| 丁香啪啪综合成人亚洲小说| 欧美日韩久久一区| 欧美色精品在线视频| 国产精品一区二区在线观看不卡 | 免费看精品久久片| 亚洲国产日产av| 亚洲一区二区精品久久av| 亚洲精品高清视频在线观看| 中文字幕成人在线观看| 国产精品视频免费| 国产欧美日韩综合| 国产亚洲一区二区三区|