⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hbtypes.pas

📁 Midas.dll全部源码
💻 PAS
字号:
{*******************************************************}
{                                                       }
{         Vladimir Gaitanoff HyperBase                  }
{                                                       }
{         Data types                                    }
{                                                       }
{         Copyright (c) 1997,99 Vladimir Gaitanoff      }
{                                                       }
{*******************************************************}

{$I HB.INC}
{$D-,L-}

unit hbTypes;

interface
uses Windows, BDE, hbIntf;

type
  DSFLDDescList   = array of DSFLDDesc;

  DSIDXDescList   = array of DSIDXDesc;

  DSBASEList      = array of IDSBase;

  DSCURList       = array of IDSCursor;

  DWORDList       = array of DWord;

  SmallIntList    = array of SmallInt;

  PWordBool       = ^WordBool;

  PDateTimeRec    = ^TDateTimeRec;

  TDateTimeAlias = type TDateTime;
    
  TDateTimeRec = record
    case Integer of
      0: (Date: Longint);
      1: (Time: Longint);
      2: (DateTime: TDateTimeAlias);
  end;

  TCompareRecords = function (Item1, Item2: PChar): Integer of object;

  PBlobData = ^TBlobData;
  TBlobData = packed record
    Length: DWord;
    Data: Pointer;
    NewLength: DWord;
    NewData: Pointer;
    IsNew: Boolean;
  end;

  PBlobStr = ^TBlobStr;
  TBlobStr = packed record
    Length: DWord;
    Data: Pointer;
  end;

  PChangeInfo = ^TChangeInfo;
  TChangeInfo = packed record
    OldSeqNo, NewSeqNo: Integer;
    RecAttr: DSAttr;
    ParentSeqNo: Integer;
  end;

  TChangeInfos = array of TChangeInfo;

  PDeltaRec    = ^TDeltaRec;
  TDeltaRec    = packed record
    RecAttr: DSAttr;
    RecNo  : DWord;
    pRecBuf: PChar;
  end;

  PAttrInfo     = ^TAttrInfo;
  TAttrInfo     = packed record
    iFieldNo: DWord;
    Attr: PChar;
    AttrType: DWord;
    Len: DWord;
    Value: Pointer;
  end;

  PAttrInfos    = ^TAttrInfos;
  TAttrInfos    = array of TAttrInfo;

  PFldData       = ^TFldData;
  TFldData       = record
    FldStatus: TPcktFldStatus;
    Len, Offs: Integer;
  end;
  TFldDatas      = array of TFldData;

  PFldInfo      = ^TFldInfo;
  TFldInfo      = record
    FldDes: TDSDataPacketFldDesc;
    FldArrayElem: Boolean;
    FldArrayElemCount: Integer;
    FldArrayElemCounter: Integer;
    FldDatas: TFldDatas;
    FldAttrs: TAttrInfos;
  end;

  TFldInfos     = array of TFldInfo;

  PSQLExprInfo = ^TSQLExprInfo;
  TSQLExprInfo = packed record
    iErrStrLen: Integer;
    iFldNum: Integer;
    bReqExpr: BYTE;
  end;

  TBytes      = array of Byte;

  FLDDescList = array of FLDDesc;     

const
  PacketTypeMap: array [fldUNKNOWN..fldTABLE] of Integer =
    (dsfldUNKNOWN, dsfldZSTRING, dsfldDATE, dsfldBYTES, dsfldBOOL,
     dsfldINT, dsfldINT, dsfldFLOATIEEE, dsfldBCD, dsfldBYTES, dsfldTIME,
     dsfldTIMESTAMP, dsfldINT, dsfldINT, dsfldFLOATIEEE, dsfldBYTES,
     0, 0, dsfldINT, dsfldINT, dsfldADT,
     dsfldARRAY, dsfldEMBEDDEDTBL, dsfldEMBEDDEDTBL);

  FieldTypeMap: array [dsfldUNKNOWN..dsfldREF] of Integer =
    (fldUNKNOWN, fldINT32, fldUINT32, fldBOOL, fldFLOAT, fldBCD,
     fldDATE, fldTIME, fldTIMESTAMP, fldZSTRING, fldUNICODE, fldBLOB,
     fldADT, fldARRAY, fldTABLE, fldREF);

  FldStatusMap: array [#0..#2] of TPcktFldStatus = (
    fldIsChanged, fldIsNull, fldIsUnChanged);

  FieldStateMap: array [TPcktFldStatus] of Char = (
    Char(NOT_BLANK), Char(BLANK_NULL), Char(BLANK_NOTCHANGED));

  ParamTypeMap: array[varSmallInt..varByte] of Integer =
    ( dsfldINT, dsfldINT, dsfldFLOATIEEE, dsfldFLOATIEEE, dsfldBCD,
      dsfldTIMESTAMP, dsfldZSTRING, 0, 0, dsfldBOOL, 0, 0, 0, 0, 0, dsfldINT);
      
  ParamTypeSize: array[varSmallInt..varByte] of Integer =
    ( SizeOf(SmallInt), SizeOf(Integer), SizeOf(Single), SizeOf(Double),
      SizeOf(Currency), SizeOf(TDateTime), 0, 0, 0, SizeOf(WordBool), 0, 0, 0,
      0, 0, SizeOf(Byte));

const

{ Field types }
  fldObjectTypes       = [fldADT, fldARRAY, fldTABLE, fldREF];


{ Record header structure }

  RecAttrOfs           = 0;
  RecNoOfs             = SizeOf(DSAttr);
  RecOfsEnd            = SizeOf(Integer) + RecNoOfs;
  Reserved             = RecOfsEnd;

{ Cursor notification events }

  ceRebuild            = 0;
  ceRecIns             = 1;
  ceRecMod             = 2;
  ceRecDel             = 3;
  ceNotify             = 4;
  ceNotifyAppend       = 5;

implementation

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -