📄 hbintf.pas
字号:
szName : MIDASPATH; { Name, if any }
iFields : Integer; { Number of columns }
iRecBufSize : Integer; { Size of record buffer }
iBookMarkSize : Integer; { Size of bookmark }
bReadOnly : Bool; { Dataset is not updateable }
iIndexes : Integer; { Number of indexes on dataset }
iOptParams : Integer; { Number of optional parameters }
bDelta : Bool; { This is a delta dataset }
iLCID : Integer; { Language used }
iUnused : packed array[0..7] of Integer; { Reserved }
end;
{ Field Descriptor }
pDSFLDDesc = ^DSFLDDesc;
DSFLDDesc = packed record
szName : MIDASNAME; { Field name }
iFldType : Integer; { Field type }
iFldSubType : Integer; { Field subtype (if applicable) }
iUnits1 : Integer; { Number of Chars, precision etc }
iUnits2 : Integer; { Decimal places etc. }
iFldLen : Integer; { Length in bytes (computed) }
iFldOffsInRec : Integer; { Offset to field in record buffer }
iNullOffsInRec : Integer; { Offset to null flag (1byte) in record buffer }
iFieldID : Word; { FieldID of this field }
iFieldIDParent : Word; { FieldID of parent, if any (part of ADT or ARRAY) }
bCalculated : Bool; { Field is Calculated }
iFldAttr : Integer; { Field attributes }
iOptParameters : Integer; { Number of optional parameters for field }
end;
{ Index descriptor }
pDSIDXDesc = ^DSIDXDesc;
DSIDXDesc = packed record
szName : MIDASNAME; { IndexName }
iFields : Integer; { Number of fields in order (0 -> base order) }
iKeyFields: DSKEY; { FieldNumbers }
iKeyLen : Integer; { Total length of key (computed) }
bUnique : Bool;
bDescending : DSKEYBOOL; { TRUE ->Descending }
bCaseInsensitive : DSKEYBOOL;
end;
{ Callbacks }
pfCHANGECallBack = procedure( { Change Notification callback }
iClientData : Integer { Client data }
); stdcall;
pfDSFilter = function( { Filter callback }
iClientData : Integer; { Client data }
pRecBuf : Pointer { Record buffer }
): Bool; stdcall;
pfDSCalcField = function( { Calculated field callback }
iClientData : Integer; { Client data }
pRecBuf : Pointer { Current record-buffer }
): DBResult; stdcall;
dsCBRType = Integer; { Return value for reconcile callback }
pdsCBRType = ^dsCBRType;
pfDSReconcile = function( { Reconcile callback }
iClientData : Integer; { Client data }
iRslt : Integer; { Result of previous callback }
iAction : DSAttr; { Update request Insert/Modify/Delete }
iResponse : dsCBRType; { Resolver response }
iErrCode : Integer; { Native error-code }
pErrMessage : PChar; { Native errormessage if any }
pErrContext : PChar; { 1-level error context, if any }
pRecUpd : Pointer; { Record that failed update }
pRecOrg : Pointer; { Original record, if any }
pRecConflict : Pointer { Conflicting record, if any }
): dsCBRType; stdcall;
pfDSReconcile_MD = function(
iClientData : Integer;
iRslt : Integer; { Result of previous callback. If set, the previuos parameters are repeated. }
iAction : DSAttr; { Update request Insert/Modify/Delete }
iErrResponse : dsCBRType; { Resolver response }
iErrCode : Integer; { Native error-code, (BDE or ..) }
pErrMessage : PChar; { Native errormessage, if any (otherwise NULL) }
pErrContext : PChar; { 1-level error context, if any (otherwise NULL) }
pRecUpd : PByte; { Record that failed update }
pRecOrg : PByte; { Original record, if any }
pRecConflict : PByte; { Conflicting error, if any }
iLevels : Integer; { Number of levels to error0level }
piFieldIDs : PInteger { Array of fieldIDS to navigate to error-dataset }
): dsCBRType; stdcall;
pfFLDComp = function( { Field compare callback }
iClientData : Integer; { Client callback data }
pVal1 : Pointer; { Fieldvalue 1 (NULL if blank) }
pVal2 : Pointer { Fieldvalue 2 (NULL if blank) }
): Integer; { returns -1 if pVal1 < pVal2, }
{ 0 if equal, +1 if pVal1 > pVal2 }
{ Resolver & Reconcile callback return values }
const
dscbrSKIP = 1; { Skip this operation (resolver : report error) }
dscbrABORT = 2; { Abort the callback session (reconcile or resolve) }
{ (resolver : undo all changes). }
dscbrMERGE = 3; { Merge the changes (resolver : 'simple' merge) }
{ (reconcile : update original. Keep change). }
{ Resolving only }
dscbrAPPLY = 4; { Overwrite the current record with new values. }
dscbrIGNORE = 5; { Ignore the update request. Don't report error. }
{ Reconcile only }
dscbrCORRECT = 4; { Overwrite change with new values. }
dscbrCANCEL = 5; { Cancel change (remove from delta). }
dscbrREFRESH = 6; { Update original record. Cancel change. }
{ Packet Creation }
type
TPcktAttrArea = (fldAttrArea, pcktAttrArea);
TPcktFldStatus = (fldIsChanged, fldIsNull, fldIsUnChanged);
PDSDataPacketFldDesc = ^TDSDataPacketFldDesc;
TDSDataPacketFldDesc = packed record
szFieldName: MIDASNAME; { Column Name }
iFieldType: Integer; { Column Type }
iAttributes: Word; { Column attributes }
end;
const
szPRIMARY_KEY = 'PRIMARY_KEY'; { Primary key used in RowRequest and for key information }
szUNIQUE_KEY = 'UNIQUE_KEY'; {Do not localize }
szDEFAULT_ORDER = 'DEFAULT_ORDER';
szCHANGEINDEX = 'CHANGEINDEX';
szCHANGE_LOG = 'CHANGE_LOG';
szSERVER_COL = 'SERVER_COL';
szCONSTRAINTS = 'CONSTRAINTS';
szDATASET_CONTEXT = 'DATASET_CONTEXT';
szDATASET_DELTA = 'DATASET_DELTA';
szREADONLY = 'READ ONLY';
szSUBTYPE = 'SUBTYPE';
szDECIMALS = 'DECIMALS';
szWIDTH = 'WIDTH';
szLCID = 'LCID';
szBDEDOMX = 'BDEDOMAIN_X';
szBDERECX = 'BDERECORD_X';
szBDEDEFX = 'BDEDEFAULT_X';
szAUTOINCVALUE = 'AUTOINCVALUE';
szELEMENTS = 'ELEMENTS';
szTABLE_NAME = 'TABLE_NAME';
szMD_FIELDLINKS = 'MD_FIELDLINKS';
szTYPENAME = 'TYPENAME';
szUPDATEMODE = 'UPDATEMODE';
szFIELDPROPS = 'FIELDPROPS';
szPROVFLAGS = 'PROVFLAGS';
szORIGIN = 'ORIGIN';
szMD_SEMANTICS = 'MD_SEMANTICS';
szSERVERCALC = 'SERVER_CALC';
szSQLBASED = 'SQL_BASED';
szQUOTECHAR = 'QUOTE_CHAR';
szBDEDOMCL = 'BDEDOMAIN_CL'; { Client side field constraints }
szBDERECCL = 'BDERECORD_CL'; { Client side record constraints }
szBDEDEFCL = 'BDEDEFAULT_CL'; { Client side default values }
szDISABLE_INSERTS = 'DISABLE_INSERTS'; { Disable inserting records }
szDISABLE_DELETES = 'DISABLE_DELETES'; { Disable deleting records }
szDISABLE_EDITS = 'DISABLE_EDITS'; { Disable editing records }
szNO_RESET_CALL = 'NO_RESET_CALL'; { Specifies not to call reset when the client closes the data }
szMINVALUE = 'MINVALUE'; { Minimum value for the field }
szMAXVALUE = 'MAXVALUE'; { Maximum value for the field }
szstMEMO = 'Text';
szstBINARY = 'Binary';
szstFMTMEMO = 'Formatted';
szstOLEOBJ = 'Ole';
szstGRAPHIC = 'Graphics';
szstDBSOLEOBJ = 'dBASEOle';
szstTYPEDBINARY = 'TypedBinary';
szstMONEY = 'Money';
szstAUTOINC = 'Autoinc';
szstADTNESTEDTABLE = 'ADTNestedTable';
szstFIXEDCHAR = 'FixedChar';
szstREFNESTEDTABLE = 'Reference';
szstGUID = 'Guid';
szstACCOLEOBJ = 'AccessOle';
szstHMEMO = 'HMemo';
szstHBINARY = 'HBinary';
szLINK_FIELD = 'LINK_FIELD';
fldstReference = 70;
dsfldUNKNOWN = 0; { Unknown }
dsfldINT = 1; { signed integer }
dsfldUINT = 2; { Unsigned integer }
dsfldBOOL = 3; { Boolean }
dsfldFLOATIEEE = 4; { IEEE float }
dsfldBCD = 5; { BCD }
dsfldDATE = 6; { Date (32 bit) }
dsfldTIME = 7; { Time (32 bit) }
dsfldTIMESTAMP = 8; { Time-stamp (64 bit) }
dsfldZSTRING = 9; { Multi-byte string }
dsfldUNICODE = 10; { unicode string }
dsfldBYTES = 11; { bytes }
dsfldADT = 12; { ADT (Abstract Data Type) }
dsfldARRAY = 13; { Array type (not attribute) }
dsfldEMBEDDEDTBL = 14; { Embedded (nested table type) }
dsfldREF = 15; { Reference }
dsSizeBitsLen = 16; { no. bits indicating fld size }
dsSizeBitsMask = $0000FFFF; { mask to retrieve fld size }
dsTypeBitsMask = $003F0000; { mask to retrieve Type info }
dsVaryingFldType = $00400000; { Varying attribute type. }
dsArrayFldType = $00800000; { Array attribute type. }
dsPseudoFldType = $01000000; {Composite. Bits 1..15 gives number of elements }
dsCompArrayFldType = $02000000; { Compressed array }
dsEmbeddedFldType = $04000000; { Embedded table }
dsIncInDelta = $80000000; { For optional parameters only:include parameter in delta }
dskeyCASEINSENSITIVE = $4000;
dskeyDESCENDING = $8000;
dsDELAYEDBIT = $80000000; { Length/number is not present }
PACKETVERSION_1 = 1;
PACKETVERSION_2 = 2;
dsCASCADEDELETES = 1;
dsCASCADEUPDATES = 2;
{ Error Codes }
const
ERRCAT_NONE = 0; { 0 No error }
ERRCAT_SYSTEM = $21; { 33 System related (Fatal Error) }
ERRCAT_NOTFOUND = $22; { 34 Object of interest Not Found }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -