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

📄 jwantquery.pas

📁 比较全面的win32api开发包
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    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 + -