📄 jwantquery.pas
字号:
wcsFriendlyName: LPWSTR;
dbType: DWORD;
dbCol: DBID;
end;
{$EXTERNALSYM tagCIPROPERTYDEF}
CIPROPERTYDEF = tagCIPROPERTYDEF;
{$EXTERNALSYM CIPROPERTYDEF}
TCiPropertyDef = CIPROPERTYDEF;
PCiPropertyDef = ^CIPROPERTYDEF;
//
// Values for ulDialect in CITextToSelectTreeEx and CITextToFullTreeEx
//
const
ISQLANG_V1 = 1; // Same as the non-Ex versions
{$EXTERNALSYM ISQLANG_V1}
ISQLANG_V2 = 2;
{$EXTERNALSYM ISQLANG_V2}
//
// Convert pwszRestriction in Triplish to a command tree.
//
function CITextToSelectTree(pwszRestriction: PWCHAR; var ppTree: PDBCOMMANDTREE;
cProperties: ULONG; pProperties: PCIPROPERTYDEF; LocaleID: LCID): HRESULT; stdcall;
{$EXTERNALSYM CITextToSelectTree}
function CITextToSelectTreeEx(pwszRestriction: PWCHAR; ulDialect: ULONG;
var ppTree: PDBCOMMANDTREE; cProperties: ULONG; pProperties: PCIPROPERTYDEF;
LocaleID: LCID): HRESULT; stdcall;
{$EXTERNALSYM CITextToSelectTreeEx}
//
// Convert pwszRestriction in Triplish, project columns, sort columns
// and grouping columns to a command tree.
//
function CITextToFullTree(pwszRestriction, pwszColumns, pwszSortColumns,
pwszGroupings: PWCHAR; var ppTree: PDBCOMMANDTREE; cProperties: ULONG;
pProperties: PCIPROPERTYDEF; LocaleID: LCID): HRESULT; stdcall;
{$EXTERNALSYM CITextToFullTree}
function CITextToFullTreeEx(pwszRestriction: PWCHAR; ulDialect: ULONG;
pwszColumns, pwszSortColumns, pwszGroupings: PWCHAR; var ppTree: PDBCOMMANDTREE;
cProperties: ULONG; pProperties: PCIPROPERTYDEF; LocaleID: LCID): HRESULT; stdcall;
{$EXTERNALSYM CITextToFullTreeEx}
//
// Build a simple restriction node.
//
function CIBuildQueryNode(wcsProperty: PWCHAR; dbOperator: DBCOMMANDOP;
const pvarPropertyValue: PROPVARIANT; var ppTree: PDBCOMMANDTREE;
cProperties: ULONG; pProperty: PCIPROPERTYDEF; LocaleID: LCID): HRESULT; stdcall;
{$EXTERNALSYM CIBuildQueryNode}
//
// Build a restriction tree from an existing tree (could be empty) and a newly added node/tree.
//
function CIBuildQueryTree(pExistingTree: PDBCOMMANDTREE; dbBoolOp: DBCOMMANDOP;
cSiblings: ULONG; ppSibsToCombine: PDBCOMMANDTREE; var ppTree: DBCOMMANDTREE): HRESULT; stdcall;
{$EXTERNALSYM CIBuildQueryTree}
//
// Convert restriction tree, project columns, sort columns
// and grouping columns to a command tree.
//
function CIRestrictionToFullTree(const pTree: DBCOMMANDTREE; pwszColumns,
pwszSortColumns, pwszGroupings: PWCHAR; var ppTree: PDBCOMMANDTREE;
cProperties: ULONG; pReserved: PCIPROPERTYDEF; LocaleID: LCID): HRESULT; stdcall;
{$EXTERNALSYM CIRestrictionToFullTree}
implementation
function QUERY_FILL_STATUS(x: DWORD): DWORD;
begin
Result := x and $7;
end;
function QUERY_RELIABILITY_STATUS(x: DWORD): DWORD;
begin
Result := x and $FFF8;
end;
const
query = 'query.dll';
{$IFDEF DYNAMIC_LINK}
var
_LoadIFilterEx: Pointer;
function LoadIFilterEx;
begin
GetProcedureAddress(_LoadIFilterEx, query, 'LoadIFilterEx');
asm
mov esp, ebp
pop ebp
jmp [_LoadIFilterEx]
end;
end;
{$ELSE}
function LoadIFilterEx; external query name 'LoadIFilterEx';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_LoadIFilter: Pointer;
function LoadIFilter;
begin
GetProcedureAddress(_LoadIFilter, query, 'LoadIFilter');
asm
mov esp, ebp
pop ebp
jmp [_LoadIFilter]
end;
end;
{$ELSE}
function LoadIFilter; external query name 'LoadIFilter';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_BindIFilterFromStorage: Pointer;
function BindIFilterFromStorage;
begin
GetProcedureAddress(_BindIFilterFromStorage, query, 'BindIFilterFromStorage');
asm
mov esp, ebp
pop ebp
jmp [_BindIFilterFromStorage]
end;
end;
{$ELSE}
function BindIFilterFromStorage; external query name 'BindIFilterFromStorage';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_BindIFilterFromStream: Pointer;
function BindIFilterFromStream;
begin
GetProcedureAddress(_BindIFilterFromStream, query, 'BindIFilterFromStream');
asm
mov esp, ebp
pop ebp
jmp [_BindIFilterFromStream]
end;
end;
{$ELSE}
function BindIFilterFromStream; external query name 'BindIFilterFromStream';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_LocateCatalogsW: Pointer;
function LocateCatalogsW;
begin
GetProcedureAddress(_LocateCatalogsW, query, 'LocateCatalogsW');
asm
mov esp, ebp
pop ebp
jmp [_LocateCatalogsW]
end;
end;
{$ELSE}
function LocateCatalogsW; external query name 'LocateCatalogsW';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_LocateCatalogsA: Pointer;
function LocateCatalogsA;
begin
GetProcedureAddress(_LocateCatalogsA, query, 'LocateCatalogsA');
asm
mov esp, ebp
pop ebp
jmp [_LocateCatalogsA]
end;
end;
{$ELSE}
function LocateCatalogsA; external query name 'LocateCatalogsA';
{$ENDIF DYNAMIC_LINK}
{$IFDEF UNICODE}
{$IFDEF DYNAMIC_LINK}
var
_LocateCatalogs: Pointer;
function LocateCatalogs;
begin
GetProcedureAddress(_LocateCatalogs, query, 'LocateCatalogsW');
asm
mov esp, ebp
pop ebp
jmp [_LocateCatalogs]
end;
end;
{$ELSE}
function LocateCatalogs; external query name 'LocateCatalogsW';
{$ENDIF DYNAMIC_LINK}
{$ELSE}
{$IFDEF DYNAMIC_LINK}
var
_LocateCatalogs: Pointer;
function LocateCatalogs;
begin
GetProcedureAddress(_LocateCatalogs, query, 'LocateCatalogsA');
asm
mov esp, ebp
pop ebp
jmp [_LocateCatalogs]
end;
end;
{$ELSE}
function LocateCatalogs; external query name 'LocateCatalogsA';
{$ENDIF DYNAMIC_LINK}
{$ENDIF}
{$IFDEF DYNAMIC_LINK}
var
_SetCatalogState: Pointer;
function SetCatalogState;
begin
GetProcedureAddress(_SetCatalogState, query, 'SetCatalogState');
asm
mov esp, ebp
pop ebp
jmp [_SetCatalogState]
end;
end;
{$ELSE}
function SetCatalogState; external query name 'SetCatalogState';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_CIState: Pointer;
function CIState;
begin
GetProcedureAddress(_CIState, query, 'CIState');
asm
mov esp, ebp
pop ebp
jmp [_CIState]
end;
end;
{$ELSE}
function CIState; external query name 'CIState';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_CIMakeICommand: Pointer;
function CIMakeICommand;
begin
GetProcedureAddress(_CIMakeICommand, query, 'CIMakeICommand');
asm
mov esp, ebp
pop ebp
jmp [_CIMakeICommand]
end;
end;
{$ELSE}
function CIMakeICommand; external query name 'CIMakeICommand';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_CICreateCommand: Pointer;
function CICreateCommand;
begin
GetProcedureAddress(_CICreateCommand, query, 'CICreateCommand');
asm
mov esp, ebp
pop ebp
jmp [_CICreateCommand]
end;
end;
{$ELSE}
function CICreateCommand; external query name 'CICreateCommand';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_CITextToSelectTree: Pointer;
function CITextToSelectTree;
begin
GetProcedureAddress(_CITextToSelectTree, query, 'CITextToSelectTree');
asm
mov esp, ebp
pop ebp
jmp [_CITextToSelectTree]
end;
end;
{$ELSE}
function CITextToSelectTree; external query name 'CITextToSelectTree';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_CITextToSelectTreeEx: Pointer;
function CITextToSelectTreeEx;
begin
GetProcedureAddress(_CITextToSelectTreeEx, query, 'CITextToSelectTreeEx');
asm
mov esp, ebp
pop ebp
jmp [_CITextToSelectTreeEx]
end;
end;
{$ELSE}
function CITextToSelectTreeEx; external query name 'CITextToSelectTreeEx';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_CITextToFullTree: Pointer;
function CITextToFullTree;
begin
GetProcedureAddress(_CITextToFullTree, query, 'CITextToSelectTreeEx');
asm
mov esp, ebp
pop ebp
jmp [_CITextToFullTree]
end;
end;
{$ELSE}
function CITextToFullTree; external query name 'CITextToSelectTreeEx';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_CITextToFullTreeEx: Pointer;
function CITextToFullTreeEx;
begin
GetProcedureAddress(_CITextToFullTreeEx, query, 'CITextToFullTreeEx');
asm
mov esp, ebp
pop ebp
jmp [_CITextToFullTreeEx]
end;
end;
{$ELSE}
function CITextToFullTreeEx; external query name 'CITextToFullTreeEx';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_CIBuildQueryNode: Pointer;
function CIBuildQueryNode;
begin
GetProcedureAddress(_CIBuildQueryNode, query, 'CIBuildQueryNode');
asm
mov esp, ebp
pop ebp
jmp [_CIBuildQueryNode]
end;
end;
{$ELSE}
function CIBuildQueryNode; external query name 'CIBuildQueryNode';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_CIBuildQueryTree: Pointer;
function CIBuildQueryTree;
begin
GetProcedureAddress(_CIBuildQueryTree, query, 'CIBuildQueryTree');
asm
mov esp, ebp
pop ebp
jmp [_CIBuildQueryTree]
end;
end;
{$ELSE}
function CIBuildQueryTree; external query name 'CIBuildQueryTree';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_CIRestrictionToFullTree: Pointer;
function CIRestrictionToFullTree;
begin
GetProcedureAddress(_CIRestrictionToFullTree, query, 'CIRestrictionToFullTree');
asm
mov esp, ebp
pop ebp
jmp [_CIRestrictionToFullTree]
end;
end;
{$ELSE}
function CIRestrictionToFullTree; external query name 'CIRestrictionToFullTree';
{$ENDIF DYNAMIC_LINK}
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -