home *** CD-ROM | disk | FTP | other *** search
/ Datatid 1999 #6 / Datatid_1999-06.iso / internet / Tango352Promo / P.SQL / PTKPKG.1 / BTRAPI32.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-12-09  |  8.8 KB  |  258 lines

  1. {*************************************************************************
  2. **
  3. **  Copyright 1982-1998 Pervasive Software Inc. All Rights Reserved
  4. **
  5. *************************************************************************}
  6. {***********************************************************************
  7.   BTRAPI32.PAS
  8.     This is the Pascal unit for MS Windows Btrieve to be called by
  9.     Delphi for Windows NT or Windows 95.
  10.  
  11. ************************************************************************}
  12. UNIT btrapi32;
  13.  
  14. INTERFACE
  15. {***********************************************************************
  16.   The following types are needed for use with 'BTRCALLBACK'.
  17. ************************************************************************}
  18. TYPE
  19.   SQL_YIELD_T = PACKED RECORD
  20.      iSessionID : WORD;
  21.   END;
  22.  
  23.   BTRV_YIELD_T = PACKED RECORD
  24.     iOpCode           : WORD;
  25.     bClientIDlastFour : ARRAY[ 1..4 ] OF BYTE;
  26.   END;
  27.  
  28.   BTI_CB_INFO_T = PACKED RECORD
  29.     typex : WORD;
  30.     size  : WORD;
  31.     case u: Boolean of
  32.       False: ( sYield : SQL_YIELD_T );
  33.       True:  ( bYield : BTRV_YIELD_T );
  34.   END;
  35.  
  36.   BTI_CB_FUNC_PTR_T = FUNCTION(
  37.                         VAR bCallbackInfo : BTI_CB_INFO_T;
  38.                         VAR bUserData )   : WORD;
  39.  
  40.   BTI_CB_FUNC_PTR_PTR_T = ^BTI_CB_FUNC_PTR_T;
  41. {***********************************************************************
  42.   PLATFORM-INDEPENDENT FUNCTIONS
  43.     BTRV and BTRVID are the same on all platforms for which they have
  44.     an implementation.  We recommend that you use only these two
  45.     functions with Btrieve 6.x client components, and then issue
  46.     the B_STOP operation prior to exiting your application.
  47. ************************************************************************}
  48.   FUNCTION BTRV(
  49.                  operation      : WORD;
  50.              VAR positionBlock;
  51.              VAR dataBuffer;
  52.              VAR dataLen        : WORD;
  53.              VAR keyBuffer;
  54.                  keyNumber      : SMALLINT ) : SMALLINT;
  55.  
  56.   FUNCTION BTRVID(
  57.                  operation      : WORD;
  58.              VAR positionBlock;
  59.              VAR dataBuffer;
  60.              VAR dataLen        : WORD;
  61.              VAR keyBuffer;
  62.                  keyNumber      : SMALLINT;
  63.              VAR clientID )     : SMALLINT;
  64.  
  65. {***********************************************************************
  66.   PLATFORM-SPECIFIC FUNCTIONS
  67.     These APIs are specific to the MS Windows platform.  With the
  68.     exception of BTRCALLBACK, we recommend that you use either
  69.     BTRV or BTRVID, shown above.  Slight performance gains can be
  70.     achieved by using BTRCALL or BTRCALLID.
  71. ************************************************************************}
  72.   FUNCTION BTRCALL(
  73.                    operation   : WORD;
  74.              VAR posblk;
  75.              VAR databuf;
  76.              VAR datalen       : longInt;
  77.              VAR keybuf;
  78.                  keylen        : BYTE;
  79.                  keynum        : BYTE ) : SMALLINT; FAR;
  80.              STDCALL;
  81.  
  82.   FUNCTION BTRCALLID(
  83.                  operation      : WORD;
  84.              VAR posblk;
  85.              VAR databuf;
  86.              VAR datalen    : longInt;
  87.              VAR keybuf;
  88.                  keylen         : BYTE;
  89.                  keynum         : BYTE;
  90.              VAR clientID ) : SMALLINT; FAR;
  91.              STDCALL;
  92.  
  93. {***********************************************************************
  94.    BTRCALLBACK - Used to register call-back function to Btrieve.
  95. ************************************************************************}
  96.   FUNCTION BTRCALLBACK(
  97.                  iAction                   : WORD;
  98.                  iOption                   : WORD;
  99.                  fCallBackFunction         : BTI_CB_FUNC_PTR_T;
  100.                  fPreviousCallBackFunction : BTI_CB_FUNC_PTR_PTR_T;
  101.              VAR bUserData;
  102.              VAR bPreviousUserData         : POINTER;
  103.              VAR bClientID )               : SMALLINT;
  104.              STDCALL;
  105.  
  106. {***********************************************************************
  107.    HISTORICAL FUNCTIONS
  108.    These APIs were needed prior to Btrieve 6.x client
  109.    components.  Older applications may still call these functions,
  110.    and the Btrieve Windows 6.x client component will work correctly.
  111.    New applications using the 6.x client components do NOT have to
  112.    call these functions.
  113. ************************************************************************}
  114.   FUNCTION BTRVINIT( VAR initializationString ) : SMALLINT;
  115.   FUNCTION BTRVSTOP : SMALLINT;
  116.   FUNCTION BRQSHELLINIT( VAR initializationString ): SMALLINT;
  117.  
  118. IMPLEMENTATION
  119. {***********************************************************************
  120.   PLATFORM-SPECIFIC FUNCTIONS
  121.     These APIs are specific to the MS Windows platform.  With the
  122.     exception of BTRCALLBACK, we recommend that you use either
  123.     BTRV or BTRVID, shown above.  Slight performance gains can be
  124.     achieved by using BTRCALL or BTRCALLID.
  125. ************************************************************************}
  126.   FUNCTION BTRCALL(
  127.                    operation   : WORD;
  128.              VAR posblk;
  129.              VAR databuf;
  130.              VAR datalen       : longInt;
  131.              VAR keybuf;
  132.                  keylen        : BYTE;
  133.                  keynum        : BYTE ) : SMALLINT; FAR;
  134.              STDCALL;
  135.              external 'W3BTRV7.DLL' name 'BTRCALL';
  136.  
  137.   FUNCTION BTRCALLID(
  138.                  operation      : WORD;
  139.              VAR posblk;
  140.              VAR databuf;
  141.              VAR datalen    : longInt;
  142.              VAR keybuf;
  143.                  keylen         : BYTE;
  144.                  keynum         : BYTE;
  145.              VAR clientID ) : SMALLINT; FAR;
  146.              STDCALL;
  147.              external 'W3BTRV7.DLL'  name 'BTRCALLID';
  148.  
  149.   FUNCTION BTRCALLBACK(
  150.                  iAction                   : WORD;
  151.                  iOption                   : WORD;
  152.                  fCallBackFunction         : BTI_CB_FUNC_PTR_T;
  153.                  fPreviousCallBackFunction : BTI_CB_FUNC_PTR_PTR_T;
  154.              VAR bUserData;
  155.              VAR bPreviousUserData         : POINTER;
  156.              VAR bClientID )               : SMALLINT;
  157.              STDCALL;
  158.              external 'W3BTRV7.DLL'  name 'BTRCALLBACK';
  159.  
  160.   { Implementation of BTRV }
  161.   FUNCTION BTRV(
  162.                  operation     : WORD;
  163.              VAR positionBlock;
  164.              VAR dataBuffer;
  165.              VAR dataLen        : WORD;
  166.              VAR keyBuffer;
  167.                  keyNumber      : SMALLINT ): SMALLINT;
  168.  
  169.   VAR
  170.     keyLen: BYTE;
  171.     dataLenParm       : longInt;
  172.     dataPack          : array[1..2] of word absolute dataLenParm;
  173.  
  174.   BEGIN
  175.     keyLen:= 255;                       {maximum key length}
  176.     dataLenParm := dataLen;
  177.     BTRV := BTRCALL(
  178.               operation,
  179.               positionBlock,
  180.               dataBuffer,
  181.               dataLenParm,
  182.               keyBuffer,
  183.               keyLen,
  184.               keyNumber );
  185.  
  186.     dataLen := dataPack[1];
  187.  
  188.   END; {BTRV}
  189.  
  190.   { Implementation of BTRVID }
  191.   FUNCTION BTRVID(
  192.                  operation      : WORD;
  193.              VAR positionBlock;
  194.              VAR dataBuffer;
  195.              VAR dataLen        : WORD;
  196.              VAR keyBuffer;
  197.                  keyNumber      : SMALLINT;
  198.              VAR clientID )     : SMALLINT;
  199.   VAR
  200.     KeyLen : Byte;
  201.     VAR dataLenParm : longInt;
  202.     dataPack : array[1..2] of word absolute dataLenParm;
  203.  
  204.   BEGIN
  205.     dataLenParm := dataLen;
  206.     KeyLen:= 255;                       {maximum key length}
  207.     BTRVID := BTRCALLID(
  208.                 operation,
  209.                 positionBlock,
  210.                 dataBuffer,
  211.                 dataLenParm,
  212.                 keyBuffer,
  213.                 keyLen,
  214.                 keyNumber,
  215.                 clientID );
  216.  
  217.     dataLen := dataPack[1];
  218.  
  219.   END; {BTRVID}
  220.  
  221.   FUNCTION WBSHELLINIT(
  222.              VAR initializationString ): SMALLINT; FAR;
  223.              STDCALL;
  224.              external 'W3BTRV7.DLL' name 'WBSHELLINIT';
  225.  
  226.   FUNCTION WBRQSHELLINIT(
  227.              VAR initializationString ): SMALLINT; FAR;
  228.              external 'W3BTRV7.DLL' name 'WBRQSHELLINIT';
  229.  
  230.   FUNCTION WBTRVINIT(
  231.              VAR intializationString): SMALLINT; FAR;
  232.              STDCALL;
  233.              external 'W3BTRV7.DLL' name 'WBTRVINIT';
  234.  
  235.   FUNCTION WBTRVSTOP: SMALLINT; FAR;
  236.              STDCALL;
  237.              external 'W3BTRV7.DLL' name 'WBTRVSTOP';
  238.  
  239.   { Implementation of BTRVINIT }
  240.   FUNCTION BTRVINIT( VAR initializationString ): SMALLINT;
  241.   BEGIN
  242.     BTRVINIT := WBTRVINIT( initializationString );
  243.   END;
  244.  
  245.   { Implementation of BTRVSTOP }
  246.   FUNCTION BTRVSTOP: SMALLINT;
  247.   BEGIN
  248.     BTRVSTOP:= WBTRVSTOP;
  249.   END;
  250.  
  251.    { Implementation of BRQSHELLINIT }
  252.   FUNCTION BRQSHELLINIT( VAR initializationString ): SMALLINT;
  253.   BEGIN
  254.     BRQSHELLINIT:= WBRQSHELLINIT( initializationString );
  255.   END;
  256.  
  257. END.
  258.