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

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

?? iddb.pas

?? 原版翎風(LF)引擎(M2)源碼(Delphi)
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit IDDB;

interface
uses
  Windows,Classes,SysUtils,Forms,Grobal2,MudUtil;
ResourceString
  sDBHeaderDesc     = '老毒游戲數據庫文件 2009/09/09';
  sDBIdxHeaderDesc  = '老毒游戲數據庫索引文件 2009/09/09';
type
  TDBHeader = packed record
    sDesc       :String[34]; //0x00
    n23         :Integer;    //0x23
    n28         :Integer;    //0x27
    n2C         :Integer;    //0x2B
    n30         :Integer;    //0x2F
    n34         :Integer;    //0x33
    n38         :Integer;    //0x37
    n3C         :Integer;    //0x3B
    n40         :Integer;    //0x3F
    n44         :Integer;    //0x43
    n48         :Integer;    //0x47
    n4B         :Byte;       //0x4B
    n4C         :Integer;    //0x4C
    n50         :Integer;    //0x50
    n54         :Integer;    //0x54
    n58         :Integer;    //0x58
    nLastIndex  :Integer;    //0x5C
    dLastDate   :TDateTime;  //0x60
    nIDCount    :Integer;    //0x68
    n6C         :Integer;    //0x6C
    nDeletedIdx :Integer;    //0x70
    dUpdateDate :TDateTime;  //0x74
  end;
  pTDBHeader = ^TDBHeader;
  TIdxHeader = packed record
    sDesc       :String[43]; //0x00
    n2C         :Integer;    //0x2C
    n30         :Integer;    //0x30
    n34         :Integer;    //0x34
    n38         :Integer;    //0x38
    n3C         :Integer;    //0x3C
    n40         :Integer;    //0x40
    n44         :Integer;    //0x44
    n48         :Integer;    //0x48
    n4C         :Integer;    //0x4C
    n50         :Integer;    //0x50
    n54         :Integer;    //0x54
    n58         :Integer;    //0x58
    n5C         :Integer;    //0x5C
    n60         :Integer;    //0x60
    nQuickCount :Integer;    //0x64
    nIDCount    :Integer;    //0x68
    nLastIndex  :Integer;    //0x6C
    dUpdateDate :TDateTime;  //0x70
  end;


  TRecordDeletedHeader = packed record
    boDeleted     :Boolean;
    bt1           :Byte;
    bt2           :Byte;
    bt3           :Byte;
    CreateDate    :TDateTime; //0x04
    LastLoginDate :TDateTime; //0x0C
    n14           :Integer;
    nNextDeletedIdx  :Integer;
//    sAccount   :String[11];//0x14
  end;



  TIdxRecord = packed record
    sName       :String[11];
    nIndex      :Integer;
  end;
  pTIdxRecord = ^TIdxRecord;
  //TNotifyEvent = procedure(Sender: TObject) of object;
  TFileIDDB = class
    m_nLastReadIdx  :Integer;        //0x4  最后訪問的記錄號
    m_nDeletedIdx   :Integer;        //0x8  已刪除的最后一個記錄號
    nC              :Integer;        //0x0C
//    w10         :Word;           //0x10
//    w12         :Word;           //0x12
//    n14         :Integer;
    m_OnChange      :TNotifyEvent;
    m_boChanged     :Boolean;        //0x18 數據庫已被更改
    m_nLastIndex    :Integer;        //0x1C 最后一次寫數據的記錄號
    m_dLastDate     :TDateTime;      //0x20 最后修改日期
    m_nFileHandle   :Integer;        //0x28
    m_Header        :TDBHeader;      //0x2C 數據庫頭
    m_QuickList     :TQuickList;     //0xA4 數據索引表
    m_sDBFileName   :String;         //0xAC
    m_sIdxFileName  :String;         //0xB0
    FCriticalSection:TRTLCriticalSection;
  private
    function LoadDBIndex: Boolean;
    procedure LoadQuickList;
    procedure SaveDBIndex;
    function GetRecord(nIndex: Integer; var DBRecord: TAccountDBRecord): Boolean;

    function UpdateRecord(nIndex: Integer; DBRecord: TAccountDBRecord;
      boNew: Boolean): Boolean;

  public
    constructor Create(sFileName:String);
    destructor Destroy; override;
    procedure Lock;
    procedure UnLock;
    function Open: Boolean;
    function OpenEx: Boolean;
    function Index(sName:String):Integer;
    function Get(nIndex:Integer;var DBRecord: TAccountDBRecord):Integer;
    function FindByName(sName:string; var List:TStringList):Integer;
    function GetBy(nIndex:Integer;var DBRecord:TAccountDBRecord):Boolean;
    function Update(nIndex: Integer; var DBRecord: TAccountDBRecord): Boolean;
    function Add(var DBRecord: TAccountDBRecord):Boolean;
    procedure Close;
  end;
var
  AccountDB     :TFileIDDB;  
implementation

uses LSShare, HUtil32;

{ TFileIDDB }
//00457D5C
constructor TFileIDDB.Create(sFileName: String);
begin
  InitializeCriticalSection(FCriticalSection);
  m_nLastReadIdx              := 0;
  m_sDBFileName               := sFileName;
  m_sIdxFileName              := sFileName + '.idx';
  m_QuickList                 := TQuickList.Create;
  m_QuickList.boCaseSensitive := False;
  g_n472A6C                   := 0;
  g_n472A74                   := 0;
  g_boDataDBReady             := False;
  m_nLastIndex                := -1;
  m_nDeletedIdx               := -1;
  if LoadDBIndex then g_boDataDBReady:=True
  else LoadQuickList();
end;

destructor TFileIDDB.Destroy;
//0x00457E64
begin
  if g_boDataDBReady then SaveDBIndex();
  m_QuickList.Free;
  DeleteCriticalSection(FCriticalSection);
end;
procedure TFileIDDB.Lock; //0x00457EA8
begin
  EnterCriticalSection(FCriticalSection);
end;
procedure TFileIDDB.UnLock;
begin
  LeaveCriticalSection(FCriticalSection);
end;
//00457F60
function TFileIDDB.Open: Boolean;
begin
  Lock();
  m_nLastReadIdx:=0;
  m_boChanged:=False;
  if FileExists(m_sDBFileName) then begin
    m_nFileHandle:=FileOpen(m_sDBFileName,fmOpenReadWrite or fmShareDenyNone);
    if m_nFileHandle > 0 then
      FileRead(m_nFileHandle,m_Header,SizeOf(TDBHeader));
  end else begin
    m_nFileHandle:=FileCreate(m_sDBFileName);
    if m_nFileHandle > 0 then begin
      m_Header.sDesc       := sDBHeaderDesc;
      m_Header.nIDCount    := 0;
      m_Header.n6C         := 0;
      m_Header.nDeletedIdx := -1;
      FileWrite(m_nFileHandle,m_Header,SizeOf(TDBHeader));
    end;
  end;
  if m_nFileHandle > 0 then begin
    Result:=True;
//    nDeletedIdx:=Header.n70; //Jacky 增加
  end else Result:=False;
end;
procedure TFileIDDB.Close();//0x00458064
begin
  FileClose(m_nFileHandle);
  if m_boChanged and Assigned(m_OnChange) then begin
    m_OnChange(Self);
  end;
    
  UnLock();
end;

//加載數據索引文件
//00458508
function TFileIDDB.LoadDBIndex():Boolean;
var
  nIdxFileHandle :Integer;
  IdxHeader      :TIdxHeader;
  DBHeader       :TDBHeader;
  IdxRecord      :TIdxRecord;
  HumRecord      :TAccountDBRecord;
  I              :Integer;
  n14            :Integer;
begin
  Result:=False;
  nIdxFileHandle:=0;
  FillChar(IdxHeader,SizeOf(TIdxHeader),#0);
  if FileExists(m_sIdxFileName) then
    nIdxFileHandle:=FileOpen(m_sIdxFileName,fmOpenReadWrite or fmShareDenyNone);
  if nIdxFileHandle > 0 then begin
    Result:=True;
    FileRead(nIdxFileHandle,IdxHeader,SizeOf(TIdxHeader));

    try
      if Open then begin
        FileSeek(m_nFileHandle,0,0);
        if FileRead(m_nFileHandle,DBHeader,SizeOf(TDBHeader)) = SizeOf(TDBHeader) then begin
          if IdxHeader.nIDCount <> DBHeader.nIDCount then
            Result:=False;
        end;
        if IdxHeader.nLastIndex <> DBHeader.nLastIndex then begin
          Result:=False;
        end;
        if IdxHeader.nLastIndex > -1 then begin
          FileSeek(m_nFileHandle,IdxHeader.nLastIndex * SizeOf(TAccountDBRecord) + SizeOf(TDBHeader),0);
          if FileRead(m_nFileHandle,HumRecord,SizeOf(TAccountDBRecord)) = SizeOf(TAccountDBRecord) then
            if IdxHeader.dUpdateDate <> HumRecord.Header.UpdateDate then
              Result:=False;
        end;
      end;
    finally
      Close();
    end;
    if Result then begin
      m_nLastIndex  := IdxHeader.nLastIndex;
      m_dLastDate   := IdxHeader.dUpdateDate;
      for i:=0 to IdxHeader.nQuickCount -1 do begin
        if FileRead(nIdxFileHandle,IdxRecord,SizeOf(TIdxRecord)) = SizeOf(TIdxRecord) then begin
          m_QuickList.AddObject(IdxRecord.sName,TObject(IdxRecord.nIndex));
        end else begin
          Result:=False;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费在线观看成人| 欧美电影影音先锋| 欧美久久高跟鞋激| 国产精品午夜电影| 视频一区免费在线观看| 国产69精品一区二区亚洲孕妇 | 自拍偷拍亚洲综合| 麻豆成人91精品二区三区| 99r国产精品| 久久精品这里都是精品| 蜜桃视频第一区免费观看| 色婷婷综合久久| 国产女同性恋一区二区| 免费久久99精品国产| 欧美日韩在线不卡| 亚洲精品国产a| 91免费版在线| 中文字幕欧美日韩一区| 国内精品免费**视频| 日韩一区二区精品葵司在线| 亚洲欧美一区二区久久| 成人在线综合网| 久久亚洲春色中文字幕久久久| 日韩激情av在线| 欧美日韩成人高清| 亚洲成国产人片在线观看| 欧美影院一区二区| 亚洲欧美另类综合偷拍| www.成人在线| 欧美v国产在线一区二区三区| 亚洲成a人片综合在线| 欧洲中文字幕精品| 亚洲国产日韩av| 欧美日韩高清一区二区不卡| 亚洲伦理在线精品| 欧美影院一区二区| 亚洲成人动漫在线观看| 欧美丝袜丝交足nylons图片| 亚洲一区二区三区三| 欧美优质美女网站| 日韩电影在线免费看| 欧美一级欧美一级在线播放| 久久电影国产免费久久电影| 久久综合色8888| 粉嫩一区二区三区在线看| 欧美激情在线观看视频免费| 成人动漫在线一区| 一区二区三区鲁丝不卡| 欧美顶级少妇做爰| 国产一区不卡视频| 中文字幕亚洲一区二区av在线| 成人激情av网| 亚洲成人av在线电影| 精品久久久久久久人人人人传媒| 黄色日韩三级电影| 最新国产成人在线观看| 欧美视频一区二区三区在线观看 | 丝袜诱惑制服诱惑色一区在线观看| 欧美亚洲一区二区在线| 免费观看在线色综合| 久久久不卡网国产精品一区| 99精品热视频| 视频一区二区三区中文字幕| 精品福利视频一区二区三区| 成人高清免费观看| 五月婷婷激情综合| 欧美韩国日本综合| 精品污污网站免费看| 激情久久五月天| 亚洲精品国产一区二区精华液| 8x福利精品第一导航| 国产69精品久久久久毛片| 亚洲丰满少妇videoshd| 欧美韩日一区二区三区四区| 欧美日韩国产综合草草| 国模套图日韩精品一区二区| 又紧又大又爽精品一区二区| 精品国产91洋老外米糕| 91麻豆福利精品推荐| 国产真实精品久久二三区| 一卡二卡欧美日韩| 日本一区二区三区在线不卡| 91精品啪在线观看国产60岁| 91在线看国产| 国产在线视频精品一区| 亚洲一区二区不卡免费| 国产精品丝袜91| 欧美一二三区在线| 91黄视频在线| 97精品久久久午夜一区二区三区| 久久99这里只有精品| 亚洲福利国产精品| 一区二区三区欧美视频| 国产无人区一区二区三区| 欧美一区二区三区四区久久| 日本高清视频一区二区| 成人精品小蝌蚪| 国产精品18久久久久久vr| 蜜臀久久99精品久久久画质超高清 | 99re热视频这里只精品| 国产伦精一区二区三区| 日本aⅴ亚洲精品中文乱码| 国产精品天美传媒| 久久女同性恋中文字幕| 精品国产1区二区| 日韩欧美国产综合| 欧美日韩国产综合一区二区三区 | 99热国产精品| 大胆亚洲人体视频| 国产成人免费视频| 国产精品一区二区不卡| 国内精品国产成人| 国内成人自拍视频| 狠狠色狠狠色合久久伊人| 老司机精品视频导航| 老司机精品视频在线| 精品一区二区三区免费播放| 日本三级亚洲精品| 青青草精品视频| 久久99精品久久久久婷婷| 久久精品国产一区二区| 国产在线观看免费一区| 丁香婷婷综合激情五月色| 国产成人av福利| 不卡的电影网站| 日本精品视频一区二区| 在线观看日韩国产| 91精品在线免费| 精品国精品国产尤物美女| 久久人人97超碰com| 中文欧美字幕免费| 亚洲精品中文在线| 午夜精品一区二区三区电影天堂 | 国产在线日韩欧美| 国产成人啪午夜精品网站男同| 成人高清av在线| 91久久精品网| 777午夜精品免费视频| 26uuu精品一区二区| 国产精品欧美一区二区三区| 亚洲人被黑人高潮完整版| 亚洲一区二区视频在线观看| 丝袜亚洲另类欧美| 国产精品一区2区| 色综合久久66| 91精品国产欧美一区二区成人| 久久欧美中文字幕| 亚洲一区二区四区蜜桃| 九九九久久久精品| 色综合天天综合狠狠| 欧美一级日韩一级| 精品91自产拍在线观看一区| 国产精品二三区| 免费人成黄页网站在线一区二区 | 久久66热偷产精品| 99久久国产综合精品女不卡| 337p亚洲精品色噜噜噜| 欧美国产日韩精品免费观看| 五月天视频一区| 成人免费高清视频在线观看| 3d成人动漫网站| 成人免费视频在线观看| 日韩av网站免费在线| av在线播放不卡| 日韩欧美国产不卡| 一级女性全黄久久生活片免费| 狠狠色伊人亚洲综合成人| 欧美吻胸吃奶大尺度电影 | 国产在线精品免费| 欧美性欧美巨大黑白大战| 久久九九久精品国产免费直播| 艳妇臀荡乳欲伦亚洲一区| 国产精品69毛片高清亚洲| 69av一区二区三区| 亚洲精品免费在线播放| 国产成人av电影免费在线观看| 欧美一区二区三区免费| 亚洲精品免费播放| 成人免费av资源| 26uuu国产日韩综合| 日本午夜一区二区| 欧美三区在线视频| 夜夜爽夜夜爽精品视频| 99久久精品久久久久久清纯| 久久蜜桃av一区二区天堂| 日本午夜一区二区| 欧美精品乱码久久久久久| 亚洲午夜精品网| 99re视频精品| 国产精品白丝在线| 成人在线视频首页| 久久久91精品国产一区二区三区| 蜜臀精品久久久久久蜜臀 | 在线观看亚洲a| 日韩理论片中文av| 成人高清视频免费观看| 国产精品美女久久久久久| 成人免费观看男女羞羞视频| 中文字幕第一页久久| 成人午夜激情片|