📄 hbtypes.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 + -