00001 {*********************************************************}
00002 { }
00003 { Zeos Database Objects }
00004 { Delphi plain interface to SybaseASE using dblib }
00005 { }
00006 { Originally written by Janos Fegyverneki }
00007 { }
00008 {*********************************************************}
00009
00010 {@********************************************************}
00011 { Copyright (c) 1999-2006 Zeos Development Group }
00012 { }
00013 { License Agreement: }
00014 { }
00015 { This library is distributed in the hope that it will be }
00016 { useful, but WITHOUT ANY WARRANTY; without even the }
00017 { implied warranty of MERCHANTABILITY or FITNESS FOR }
00018 { A PARTICULAR PURPOSE. See the GNU Lesser General }
00019 { Public License for more details. }
00020 { }
00021 { The source code of the ZEOS Libraries and packages are }
00022 { distributed under the Library GNU General Public }
00023 { License (see the file COPYING / COPYING.ZEOS) }
00024 { with the following modification: }
00025 { As a special exception, the copyright holders of this }
00026 { library give you permission to link this library with }
00027 { independent modules to produce an executable, }
00028 { regardless of the license terms of these independent }
00029 { modules, and to copy and distribute the resulting }
00030 { executable under terms of your choice, provided that }
00031 { you also meet, for each linked independent module, }
00032 { the terms and conditions of the license of that module. }
00033 { An independent module is a module which is not derived }
00034 { from or based on this library. If you modify this }
00035 { library, you may extend this exception to your version }
00036 { of the library, but you are not obligated to do so. }
00037 { If you do not wish to do so, delete this exception }
00038 { statement from your version. }
00039 { }
00040 { }
00041 { The project web site is located on: }
00042 { http:
00043 { http:
00044 { svn:
00045 { }
00046 { http:
00047 { http:
00048 { }
00049 { }
00050 { }
00051 { Zeos Development Group. }
00052 {********************************************************@}
00053
00054 unit ZPlainDbLibSybaseAse125;
00055
00056 interface
00057
00058 {$I ZPlain.inc}
00059
00060 uses Classes, ZCompatibility, ZPlainLoader, ZPlainDbLibDriver;
00061
00062 const
00063 WINDOWS_DLL_LOCATION = 'libsybdb.dll';
00064 LINUX_DLL_LOCATION = 'libsybdb.so';
00065
00066 { Macros for dbsetlname() }
00067 DBSETHOST = 1;
00068 DBSETUSER = 2;
00069 DBSETPWD = 3;
00070 DBSETHID = 4;
00071 DBSETAPP = 5;
00072 DBSETBCP = 6;
00073 DBSETLANG = 7;
00074 DBSETNOSHORT = 8;
00075 DBSETHIER = 9;
00076 DBSETCHARSET = 10;
00077 DBSETPACKET = 11;
00078 DBSETENCRYPT = 12;
00079 DBSETLABELED = 13;
00080
00081 { Macros for setting the PLOGINREC }
00082 function DBSETLHOST(Login: PLOGINREC; ClientHost: PChar): RETCODE;
00083 function DBSETLUSER(Login: PLOGINREC; UserName: PChar): RETCODE;
00084 function DBSETLPWD(Login: PLOGINREC; Passwd: PChar): RETCODE;
00085 function DBSETLAPP(Login: PLOGINREC; AppName: PChar): RETCODE;
00086 function DBSETLNATLANG(Login: PLOGINREC; Lang: PChar): RETCODE;
00087 function DBSETLCHARSET(Login: PLOGINREC; Charset: PChar): RETCODE;
00088
00089 { Function macros }
00090 function dbrbuf(Proc: PDBPROCESS): DBINT;
00091
00092
00093 {************** Plain API Function types definition *************}
00094
00095 type
00096 DBERRHANDLE_PROC = function(Proc: PDBPROCESS; Severity, DbErr, OsErr: Integer;
00097 DbErrStr, OsErrStr: PChar): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00098 DBMSGHANDLE_PROC = function(Proc: PDBPROCESS; MsgNo: DBINT; MsgState,
00099 Severity: Integer; MsgText, SrvName, ProcName: PChar; Line: DBUSMALLINT):
00100 Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00101
00102 Tdb12hour = function(Proc: PDBPROCESS; Language: PChar): DBBOOL; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00103
00104 Tdberrhandle = function(Handler: DBERRHANDLE_PROC): DBERRHANDLE_PROC; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00105 Tdbmsghandle = function(Handler: DBMSGHANDLE_PROC): DBMSGHANDLE_PROC; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00106
00107 { Two-phase commit functions }
00108 Tabort_xact = function(Proc: PDBPROCESS; CommId: DBINT): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00109 Tbuild_xact_string = procedure(XActName, Service: PChar; CommId: DBINT;
00110 Result: PChar); {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00111 Tclose_commit = procedure(Proc: PDBPROCESS); {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00112 Tcommit_xact = function(Proc: PDBPROCESS; CommId: DBINT): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00113 Topen_commit = function(Login: PLOGINREC; ServerName: PChar): PDBPROCESS; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00114 Tremove_xact = function(Proc: PDBPROCESS; CommId: DBINT; SiteCount: Integer):
00115 RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00116 Tscan_xact = function(Proc: PDBPROCESS; CommId: DBINT): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00117 Tstart_xact = function(Proc: PDBPROCESS; AppName, XActName: PChar;
00118 SiteCount: Integer): DBINT; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00119 Tstat_xact = function(Proc: PDBPROCESS; CommId: DBINT): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00120
00121 { BCP functions }
00122 Tbcp_batch = function(Proc: PDBPROCESS): DBINT; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00123 Tbcp_bind = function(Proc: PDBPROCESS; VarAddr: PByte; PrefixLen: Integer;
00124 VarLen: DBINT; Terminator: PByte; TermLen, Typ, TableColumn: Integer):
00125 RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00126 Tbcp_colfmt = function(Proc: PDBPROCESS; FileColumn: Integer; FileType: Byte;
00127 FilePrefixLen: Integer; FileColLen: DBINT; FileTerm: PByte; FileTermLen,
00128 TableColumn: Integer): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00129 Tbcp_collen = function(Proc: PDBPROCESS; VarLen: DBINT; TableColumn: Integer):
00130 RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00131 Tbcp_colptr = function(Proc: PDBPROCESS; ColPtr: PByte; TableColumn: Integer):
00132 RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00133 Tbcp_columns = function(Proc: PDBPROCESS; FileColCount: Integer): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00134 Tbcp_control = function(Proc: PDBPROCESS; Field: Integer; Value: DBINT):
00135 RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00136 Tbcp_done = function(Proc: PDBPROCESS): DBINT; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00137 Tbcp_exec = function(Proc: PDBPROCESS; RowsCopied: PDBINT): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00138 Tbcp_init = function(Proc: PDBPROCESS; TableName, hFile, ErrFile: PChar;
00139 Direction: Integer): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00140 Tbcp_moretext = function(Proc: PDBPROCESS; Size: DBINT; Text: PByte):
00141 RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00142 Tbcp_readfmt = function(Proc: PDBPROCESS; FileName: PChar): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00143 Tbcp_sendrow = function(Proc: PDBPROCESS): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00144 Tbcp_writefmt = function(Proc: PDBPROCESS; FileName: PChar): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00145
00146 { Standard DB-Library functions }
00147 Tdbadata = function(Proc: PDBPROCESS; ComputeId, Column: Integer): PByte; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00148 Tdbadlen = function(Proc: PDBPROCESS; ComputeId, Column: Integer): DBINT; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00149 Tdbaltbind = function(Proc: PDBPROCESS; ComputeId, Column: Integer;
00150 VarType: Integer; VarLen: DBINT; VarAddr: PByte): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00151 Tdbaltcolid = function(Proc: PDBPROCESS; ComputeId, Column: Integer): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00152 Tdbaltlen = function(Proc: PDBPROCESS; ComputeId, Column: Integer): DBINT; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00153 Tdbaltop = function(Proc: PDBPROCESS; ComputeId, Column: Integer): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00154 Tdbalttype = function(Proc: PDBPROCESS; ComputeId, Column: Integer): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00155 Tdbaltutype = function(Proc: PDBPROCESS; ComputeId, Column: Integer): DBINT; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00156 Tdbanullbind = function(Proc: PDBPROCESS; ComputeId, Column: Integer;
00157 Indicator: PDBINT): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00158 Tdbbind = function(Proc: PDBPROCESS; Column, VarType, VarLen: Integer;
00159 VarAddr: PByte): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00160 Tdbbylist = function(Proc: PDBPROCESS; ComputeId: Integer; Size: PInteger):
00161 PByte; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00162 Tdbcancel = function(Proc: PDBPROCESS): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00163 Tdbcanquery = function(Proc: PDBPROCESS): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00164 Tdbchange = function(Proc: PDBPROCESS): PChar; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00165 Tdbclose = function(Proc: PDBPROCESS): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00166 Tdbclrbuf = procedure(Proc: PDBPROCESS; N: DBINT); {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00167 Tdbclropt = function(Proc: PDBPROCESS; Option: Integer; Param: PChar): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00168 Tdbcmd = function(Proc: PDBPROCESS; Cmd: PChar): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00169 Tdbcmdrow = function(Proc: PDBPROCESS): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00170 Tdbcolbrowse = function(Proc: PDBPROCESS; Column: Integer): LongBool; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00171 Tdbcollen = function(Proc: PDBPROCESS; Column: Integer): DBINT; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00172 Tdbcolname = function(Proc: PDBPROCESS; Column: Integer): PChar; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00173 Tdbcolsource = function(Proc: PDBPROCESS; Column: Integer): PChar; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00174
00175 Tdbcoltype = function(Proc: PDBPROCESS; Column: Integer): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00176 Tdbcolutype = function(Proc: PDBPROCESS; Column: Integer): DBINT; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00177 Tdbconvert = function(Proc: PDBPROCESS; SrcType: Integer; Src: PByte;
00178 SrcLen: DBINT; DestType: Integer; Dest: PByte; DestLen: DBINT): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00179 Tdbcount = function(Proc: PDBPROCESS): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00180 Tdbcurcmd = function(Proc: PDBPROCESS): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00181 Tdbcurrow = function(Proc: PDBPROCESS): DBINT; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00182
00183 Tdbcursor = function(hCursor: PDBCURSOR; OpType, Row: Integer; Table,
00184 Values: PChar): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00185 Tdbcursorbind = function(hCursor: PDBCURSOR; Col, VarType: Integer; VarLen: DBINT;
00186 POutLen: PDBINT; VarAddr: PByte): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00187 Tdbcursorclose = function(DbHandle: PDBHANDLE): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00188 Tdbcursorcolinfo = function(hCursor: PDBCURSOR; Column: Integer; ColName: PChar;
00189 ColType: PInteger; ColLen: PDBINT; UserType: PInteger): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00190 Tdbcursorfetch = function(hCursor: PDBCURSOR; FetchType, RowNum: Integer):
00191 RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00192 Tdbcursorinfo = function(hCursor: PDBCURSOR; nCols: PInteger; nRows: PDBINT):
00193 RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00194 Tdbcursoropen = function(Proc: PDBPROCESS; Sql: PChar; ScrollOpt,
00195 ConCurOpt: Integer; nRows: Cardinal; PStatus: PDBINT): PDBCURSOR; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00196 Tdbdata = function(Proc: PDBPROCESS; Column: Integer): PByte; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00197 Tdbdatecrack = function(Proc: PDBPROCESS; DateInfo: PDBDATEREC;
00198 DateType: PDBDATETIME): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00199 Tdbdatlen = function(Proc: PDBPROCESS; Column: Integer): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00200 Tdbdead = function(Proc: PDBPROCESS): LongBool; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00201 Tdbexit = procedure; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00202 Tdbfcmd = function(Proc: PDBPROCESS; CmdString: PChar; var Params): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00203 Tdbfirstrow = function(Proc: PDBPROCESS): DBINT; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00204 Tdbfreebuf = procedure(Proc: PDBPROCESS); {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00205 Tdbloginfree = procedure(Login: PLOGINREC); {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00206 Tdbfreequal = procedure(Ptr: PChar); {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00207 Tdbgetchar = function(Proc: PDBPROCESS; N: Integer): PChar; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00208 Tdbgetmaxprocs = function: SmallInt; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00209 Tdbgetoff = function(Proc: PDBPROCESS; OffType: DBUSMALLINT;
00210 StartFrom: Integer): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00211 Tdbgetpacket = function(Proc: PDBPROCESS): Cardinal; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00212 Tdbgetrow = function(Proc: PDBPROCESS; Row: DBINT): STATUS; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00213 Tdbgetuserdata = function(Proc: PDBPROCESS): Pointer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00214 Tdbhasretstat = function(Proc: PDBPROCESS): LongBool; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00215 Tdbinit = function: RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00216 Tdbisavail = function(Proc: PDBPROCESS): LongBool; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00217 Tdbisopt = function(Proc: PDBPROCESS; Option: Integer; Param: PChar): LongBool; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00218 Tdblastrow = function(Proc: PDBPROCESS): DBINT; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00219 Tdblogin = function: PLOGINREC; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00220 Tdbmorecmds = function(Proc: PDBPROCESS): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00221 Tdbmoretext = function(Proc: PDBPROCESS; Size: DBINT; Text: PByte): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00222 Tdbname = function(Proc: PDBPROCESS): PChar; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00223 Tdbnextrow = function(Proc: PDBPROCESS): STATUS; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00224 Tdbnullbind = function(Proc: PDBPROCESS; Column: Integer; Indicator: PDBINT):
00225 RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00226 Tdbnumalts = function(Proc: PDBPROCESS; ComputeId: Integer): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00227 Tdbnumcols = function(Proc: PDBPROCESS): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00228 Tdbnumcompute = function(Proc: PDBPROCESS): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00229 Tdbnumorders = function(Proc: PDBPROCESS): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00230 Tdbnumrets = function(Proc: PDBPROCESS): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00231 Tdbopen = function(Login: PLOGINREC; Host: PChar): PDBPROCESS; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00232 Tdbordercol = function(Proc: PDBPROCESS; Order: Integer): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00233 Tdbprhead = procedure(Proc: PDBPROCESS); {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00234 Tdbprrow = function(Proc: PDBPROCESS): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00235 Tdbprtype = function(Token: Integer): PChar; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00236 Tdbqual = function(Proc: PDBPROCESS; TabNum: Integer; TabName: PChar): PChar; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00237 Tdbreadtext = function(Proc: PDBPROCESS; Buf: Pointer; BufSize: DBINT): DBINT; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00238 Tdbresults = function(Proc: PDBPROCESS): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00239 Tdbretdata = function(Proc: PDBPROCESS; RetNum: Integer): PByte; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00240 Tdbretlen = function(Proc: PDBPROCESS; RetNum: Integer): DBINT; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00241 Tdbretname = function(Proc: PDBPROCESS; RetNum: Integer): PChar; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00242 Tdbretstatus = function(Proc: PDBPROCESS): DBINT; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00243 Tdbrettype = function(Proc: PDBPROCESS; RetNum: Integer): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00244 Tdbrows = function(Proc: PDBPROCESS): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00245 Tdbrowtype = function(Proc: PDBPROCESS): STATUS; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00246 Tdbrpcinit = function(Proc: PDBPROCESS; ProcName: PChar; Options: DBSMALLINT):
00247 RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00248 Tdbrpcparam = function(Proc: PDBPROCESS; ParamName: PChar; Status: Byte;
00249 Typ: Integer; MaxLen, DataLen: DBINT; Value: PByte): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00250 Tdbrpcsend = function(Proc: PDBPROCESS): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00251
00252 Tdbrpwclr = procedure(Login: PLOGINREC); {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00253 Tdbsetavail = procedure(Proc: PDBPROCESS); {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00254 Tdbsetmaxprocs = function(MaxProcs: SmallInt): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00255 Tdbsetlname = function(Login: PLOGINREC; Value: PChar; Item: Integer): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00256 Tdbsetlogintime = function(Seconds: Integer): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00257
00258 Tdbsetnull = function(Proc: PDBPROCESS; BindType, BindLen: Integer;
00259 BindVal: PByte): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00260 Tdbsetopt = function(Proc: PDBPROCESS; Option: Integer; CharParam: PChar; IntParam: Integer):
00261 RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00262 Tdbsettime = function(Seconds: Integer): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00263 Tdbsetuserdata = procedure(Proc: PDBPROCESS; Ptr: Pointer); {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00264 Tdbsqlexec = function(Proc: PDBPROCESS): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00265 Tdbsqlok = function(Proc: PDBPROCESS): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00266 Tdbsqlsend = function(Proc: PDBPROCESS): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00267 Tdbstrcpy = function(Proc: PDBPROCESS; Start, NumBytes: Integer; Dest: PChar):
00268 RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00269 Tdbstrlen = function(Proc: PDBPROCESS): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00270 Tdbtabbrowse = function(Proc: PDBPROCESS; TabNum: Integer): LongBool; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00271 Tdbtabcount = function(Proc: PDBPROCESS): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00272 Tdbtabname = function(Proc: PDBPROCESS; Table: Integer): PChar; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00273 Tdbtabsource = function(Proc: PDBPROCESS; Column: Integer; TabNum: PInteger):
00274 PChar; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00275 Tdbtsnewlen = function(Proc: PDBPROCESS): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00276 Tdbtsnewval = function(Proc: PDBPROCESS): PDBBINARY; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00277 Tdbtsput = function(Proc: PDBPROCESS; NewTs: PDBBINARY; NewTsName,
00278 TabNum: Integer; TableName: PChar): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00279 Tdbtxptr = function(Proc: PDBPROCESS; Column: Integer): PDBBINARY; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00280 Tdbtxtimestamp = function(Proc: PDBPROCESS; Column: Integer): PDBBINARY; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00281 Tdbtxtsnewval = function(Proc: PDBPROCESS): PDBBINARY; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00282 Tdbtxtsput = function(Proc: PDBPROCESS; NewTxts: PDBBINARY; Column: Integer):
00283 RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00284 Tdbuse = function(Proc: PDBPROCESS; DbName: PChar): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00285 Tdbvarylen = function(Proc: PDBPROCESS; Column: Integer): LongBool; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00286 Tdbwillconvert = function(SrcType, DestType: Integer): LongBool; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00287 Tdbwritetext = function(Proc: PDBPROCESS; ObjName: PChar; TextPtr: PDBBINARY;
00288 TextPtrLen: DBTINYINT; Timestamp: PDBBINARY; Log: LongBool; Size: DBINT;
00289 Text: PByte): RETCODE; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00290
00291 {************* Plain API Function variables definition ************}
00292
00293 var
00294 db12hour : Tdb12hour;
00295
00296 dberrhandle : Tdberrhandle;
00297 dbmsghandle : Tdbmsghandle;
00298
00299 { Two-phase commit functions }
00300 abort_xact : Tabort_xact;
00301 build_xact_string : Tbuild_xact_string;
00302 close_commit : Tclose_commit;
00303 commit_xact : Tcommit_xact;
00304 open_commit : Topen_commit;
00305 remove_xact : Tremove_xact;
00306 scan_xact : Tscan_xact;
00307 start_xact : Tstart_xact;
00308 stat_xact : Tstat_xact;
00309
00310 { BCP functions }
00311 bcp_batch : Tbcp_batch;
00312 bcp_bind : Tbcp_bind;
00313 bcp_colfmt : Tbcp_colfmt;
00314 bcp_collen : Tbcp_collen;
00315 bcp_colptr : Tbcp_colptr;
00316 bcp_columns : Tbcp_columns;
00317 bcp_control : Tbcp_control;
00318 bcp_done : Tbcp_done;
00319 bcp_exec : Tbcp_exec;
00320 bcp_init : Tbcp_init;
00321 bcp_moretext : Tbcp_moretext;
00322 bcp_readfmt : Tbcp_readfmt;
00323 bcp_sendrow : Tbcp_sendrow;
00324 bcp_writefmt : Tbcp_writefmt;
00325
00326 { Standard DB-Library functions }
00327 dbadata : Tdbadata;
00328 dbadlen : Tdbadlen;
00329 dbaltbind : Tdbaltbind;
00330 dbaltcolid : Tdbaltcolid;
00331 dbaltlen : Tdbaltlen;
00332 dbaltop : Tdbaltop;
00333 dbalttype : Tdbalttype;
00334 dbaltutype : Tdbaltutype;
00335 dbanullbind : Tdbanullbind;
00336 dbbind : Tdbbind;
00337 dbbylist : Tdbbylist;
00338 dbcancel : Tdbcancel;
00339 dbcanquery : Tdbcanquery;
00340 dbchange : Tdbchange;
00341 dbclose : Tdbclose;
00342 dbclrbuf : Tdbclrbuf;
00343 dbclropt : Tdbclropt;
00344 dbcmd : Tdbcmd;
00345 dbcmdrow : Tdbcmdrow;
00346 dbcolbrowse : Tdbcolbrowse;
00347 dbcollen : Tdbcollen;
00348 dbcolname : Tdbcolname;
00349 dbcolsource : Tdbcolsource;
00350
00351 dbcoltype : Tdbcoltype;
00352 dbcolutype : Tdbcolutype;
00353 dbconvert : Tdbconvert;
00354 dbcount : Tdbcount;
00355 dbcurcmd : Tdbcurcmd;
00356 dbcurrow : Tdbcurrow;
00357
00358 dbcursor : Tdbcursor;
00359 dbcursorbind : Tdbcursorbind;
00360 dbcursorclose : Tdbcursorclose;
00361 dbcursorcolinfo : Tdbcursorcolinfo;
00362 dbcursorfetch : Tdbcursorfetch;
00363 dbcursorinfo : Tdbcursorinfo;
00364 dbcursoropen : Tdbcursoropen;
00365 dbdata : Tdbdata;
00366 dbdatecrack : Tdbdatecrack;
00367 dbdatlen : Tdbdatlen;
00368 dbdead : Tdbdead;
00369 dbexit : Tdbexit;
00370 dbfcmd : Tdbfcmd;
00371 dbfirstrow : Tdbfirstrow;
00372 dbfreebuf : Tdbfreebuf;
00373 dbloginfree : Tdbloginfree;
00374 dbfreequal : Tdbfreequal;
00375 dbgetchar : Tdbgetchar;
00376 dbgetmaxprocs : Tdbgetmaxprocs;
00377 dbgetoff : Tdbgetoff;
00378 dbgetpacket : Tdbgetpacket;
00379 dbgetrow : Tdbgetrow;
00380 dbgetuserdata : Tdbgetuserdata;
00381 dbhasretstat : Tdbhasretstat;
00382 dbinit : Tdbinit;
00383 dbisavail : Tdbisavail;
00384 dbisopt : Tdbisopt;
00385 dblastrow : Tdblastrow;
00386 dblogin : Tdblogin;
00387 dbmorecmds : Tdbmorecmds;
00388 dbmoretext : Tdbmoretext;
00389 dbname : Tdbname;
00390 dbnextrow : Tdbnextrow;
00391 dbnullbind : Tdbnullbind;
00392 dbnumalts : Tdbnumalts;
00393 dbnumcols : Tdbnumcols;
00394 dbnumcompute : Tdbnumcompute;
00395 dbnumorders : Tdbnumorders;
00396 dbnumrets : Tdbnumrets;
00397 dbopen : Tdbopen;
00398 dbordercol : Tdbordercol;
00399 dbprhead : Tdbprhead;
00400 dbprrow : Tdbprrow;
00401 dbprtype : Tdbprtype;
00402 dbqual : Tdbqual;
00403 dbreadtext : Tdbreadtext;
00404 dbresults : Tdbresults;
00405 dbretdata : Tdbretdata;
00406 dbretlen : Tdbretlen;
00407 dbretname : Tdbretname;
00408 dbretstatus : Tdbretstatus;
00409 dbrettype : Tdbrettype;
00410 dbrows : Tdbrows;
00411 dbrowtype : Tdbrowtype;
00412 dbrpcinit : Tdbrpcinit;
00413 dbrpcparam : Tdbrpcparam;
00414 dbrpcsend : Tdbrpcsend;
00415
00416 dbrpwclr : Tdbrpwclr;
00417 dbsetavail : Tdbsetavail;
00418 dbsetmaxprocs : Tdbsetmaxprocs;
00419 dbsetlname : Tdbsetlname;
00420 dbsetlogintime : Tdbsetlogintime;
00421
00422 dbsetnull : Tdbsetnull;
00423 dbsetopt : Tdbsetopt;
00424 dbsettime : Tdbsettime;
00425 dbsetuserdata : Tdbsetuserdata;
00426 dbsqlexec : Tdbsqlexec;
00427 dbsqlok : Tdbsqlok;
00428 dbsqlsend : Tdbsqlsend;
00429 dbstrcpy : Tdbstrcpy;
00430 dbstrlen : Tdbstrlen;
00431 dbtabbrowse : Tdbtabbrowse;
00432 dbtabcount : Tdbtabcount;
00433 dbtabname : Tdbtabname;
00434 dbtabsource : Tdbtabsource;
00435 dbtsnewlen : Tdbtsnewlen;
00436 dbtsnewval : Tdbtsnewval;
00437 dbtsput : Tdbtsput;
00438 dbtxptr : Tdbtxptr;
00439 dbtxtimestamp : Tdbtxtimestamp;
00440 dbtxtsnewval : Tdbtxtsnewval;
00441 dbtxtsput : Tdbtxtsput;
00442 dbuse : Tdbuse;
00443 dbvarylen : Tdbvarylen;
00444 dbwillconvert : Tdbwillconvert;
00445 dbwritetext : Tdbwritetext;
00446
00447 type
00448 {** Implements a loader for Sybase native library. }
00449 TZSybaseNativeLibraryLoader = class (TZNativeLibraryLoader)
00450 public
00451 function Load: Boolean; override;
00452 procedure FreeNativeLibrary; override;
00453 end;
00454
00455 var
00456 LibraryLoader: TZNativeLibraryLoader;
00457 SybaseErrors: TList;
00458 SybaseMessages: TList;
00459
00460 implementation
00461
00462 { Handle sql server errors }
00463 var
00464 OldErrorHandle: DBERRHANDLE_PROC = nil;
00465 OldMessageHandle: DBMSGHANDLE_PROC = nil;
00466
00467 { Handle sql server error messages }
00468 function ErrorHandle(Proc: PDBPROCESS; Severity, DbErr, OsErr: Integer;
00469 DbErrStr, OsErrStr: PChar): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00470 var
00471 SybaseError: PDBLibError;
00472 begin
00473 New(SybaseError);
00474 SybaseError.dbProc := Proc;
00475 SybaseError.Severity := Severity;
00476 SybaseError.DbErr := DbErr;
00477 SybaseError.OsErr := OsErr;
00478 SybaseError.DbErrStr := DbErrStr;
00479 SybaseError.OsErrStr := OsErrStr;
00480 SybaseErrors.Add(SybaseError);
00481
00482 Result := INT_CANCEL;
00483 end;
00484
00485 { Handle sql server messages }
00486 function MessageHandle(Proc: PDBPROCESS; MsgNo: DBINT; MsgState, Severity: Integer;
00487 MsgText, SrvName, ProcName: PChar; Line: DBUSMALLINT): Integer; {$IFNDEF UNIX} stdcall {$ELSE} cdecl {$ENDIF};
00488 var
00489 SybaseMessage: PDBLibMessage;
00490 begin
00491 New(SybaseMessage);
00492 SybaseMessage.dbProc := Proc;
00493 SybaseMessage.MsgNo := MsgNo;
00494 SybaseMessage.MsgState := MsgState;
00495 SybaseMessage.Severity := Severity;
00496 SybaseMessage.MsgText := MsgText;
00497 SybaseMessage.SrvName := SrvName;
00498 SybaseMessage.ProcName := ProcName;
00499 SybaseMessage.Line := Line;
00500 SybaseMessages.Add(SybaseMessage);
00501
00502 Result := 0;
00503 end;
00504
00505 function DBSETLHOST(Login: PLOGINREC; ClientHost: PChar): RETCODE;
00506 begin
00507 Result := dbsetlname(Login, ClientHost, DBSETHOST);
00508 end;
00509
00510 function DBSETLUSER(Login: PLOGINREC; UserName: PChar): RETCODE;
00511 begin
00512 Result := dbsetlname(Login, UserName, DBSETUSER);
00513 end;
00514
00515 function DBSETLPWD(Login: PLOGINREC; Passwd: PChar): RETCODE;
00516 begin
00517 Result := dbsetlname(Login, Passwd, DBSETPWD);
00518 end;
00519
00520 function DBSETLAPP(Login: PLOGINREC; AppName: PChar): RETCODE;
00521 begin
00522 Result := dbsetlname(Login, AppName, DBSETAPP);
00523 end;
00524
00525 function DBSETLNATLANG(Login: PLOGINREC; Lang: PChar): RETCODE;
00526 begin
00527 Result := dbsetlname(Login, Lang, DBSETLANG);
00528 end;
00529
00530 function DBSETLCHARSET(Login: PLOGINREC; Charset: PChar): RETCODE;
00531 begin
00532 Result := dbsetlname(Login, Charset, DBSETCHARSET);
00533 end;
00534
00535 function dbrbuf(Proc: PDBPROCESS): DBINT;
00536 begin
00537 Result := 0;
00538 end;
00539
00540 { TZSybaseNativeLibraryLoader }
00541
00542 {**
00543 Loads a library module.
00544 @return <code>True</code> if library was successfully loaded.
00545 }
00546 function TZSybaseNativeLibraryLoader.Load: Boolean;
00547 begin
00548 Result := inherited Load;
00549 if not Result then
00550 Exit;
00551
00552 @db12hour := GetAddress('db12hour');
00553 @dberrhandle := GetAddress('dberrhandle');
00554 @dbmsghandle := GetAddress('dbmsghandle');
00555 @abort_xact := GetAddress('abort_xact');
00556 @build_xact_string := GetAddress('build_xact_string');
00557 @close_commit := GetAddress('close_commit');
00558 @commit_xact := GetAddress('commit_xact');
00559 @open_commit := GetAddress('open_commit');
00560 @remove_xact := GetAddress('remove_xact');
00561 @scan_xact := GetAddress('scan_xact');
00562 @start_xact := GetAddress('start_xact');
00563 @stat_xact := GetAddress('stat_xact');
00564 @bcp_batch := GetAddress('bcp_batch');
00565 @bcp_bind := GetAddress('bcp_bind');
00566 @bcp_colfmt := GetAddress('bcp_colfmt');
00567 @bcp_collen := GetAddress('bcp_collen');
00568 @bcp_colptr := GetAddress('bcp_colptr');
00569 @bcp_columns := GetAddress('bcp_columns');
00570 @bcp_control := GetAddress('bcp_control');
00571 @bcp_done := GetAddress('bcp_done');
00572 @bcp_exec := GetAddress('bcp_exec');
00573 @bcp_init := GetAddress('bcp_init');
00574 @bcp_moretext := GetAddress('bcp_moretext');
00575 @bcp_readfmt := GetAddress('bcp_readfmt');
00576 @bcp_sendrow := GetAddress('bcp_sendrow');
00577 @bcp_writefmt := GetAddress('bcp_writefmt');
00578 @dbadata := GetAddress('dbadata');
00579 @dbadlen := GetAddress('dbadlen');
00580 @dbaltbind := GetAddress('dbaltbind');
00581 @dbaltcolid := GetAddress('dbaltcolid');
00582 @dbaltlen := GetAddress('dbaltlen');
00583 @dbaltop := GetAddress('dbaltop');
00584 @dbalttype := GetAddress('dbalttype');
00585 @dbaltutype := GetAddress('dbaltutype');
00586 @dbanullbind := GetAddress('dbanullbind');
00587 @dbbind := GetAddress('dbbind');
00588 @dbbylist := GetAddress('dbbylist');
00589 @dbcancel := GetAddress('dbcancel');
00590 @dbcanquery := GetAddress('dbcanquery');
00591 @dbchange := GetAddress('dbchange');
00592 @dbclose := GetAddress('dbclose');
00593 @dbclrbuf := GetAddress('dbclrbuf');
00594 @dbclropt := GetAddress('dbclropt');
00595 @dbcmd := GetAddress('dbcmd');
00596 @dbcmdrow := GetAddress('dbcmdrow');
00597 @dbcolbrowse := GetAddress('dbcolbrowse');
00598 @dbcollen := GetAddress('dbcollen');
00599 @dbcolname := GetAddress('dbcolname');
00600 @dbcolsource := GetAddress('dbcolsource');
00601
00602 @dbcoltype := GetAddress('dbcoltype');
00603 @dbcolutype := GetAddress('dbcolutype');
00604 @dbconvert := GetAddress('dbconvert');
00605 @dbcount := GetAddress('dbcount');
00606 @dbcurcmd := GetAddress('dbcurcmd');
00607 @dbcurrow := GetAddress('dbcurrow');
00608 @dbcursor := GetAddress('dbcursor');
00609 @dbcursorbind := GetAddress('dbcursorbind');
00610 @dbcursorclose := GetAddress('dbcursorclose');
00611 @dbcursorcolinfo := GetAddress('dbcursorcolinfo');
00612 @dbcursorfetch := GetAddress('dbcursorfetch');
00613 @dbcursorinfo := GetAddress('dbcursorinfo');
00614 @dbcursoropen := GetAddress('dbcursoropen');
00615 @dbdata := GetAddress('dbdata');
00616 @dbdatecrack := GetAddress('dbdatecrack');
00617 @dbdatlen := GetAddress('dbdatlen');
00618 @dbdead := GetAddress('dbdead');
00619 @dbexit := GetAddress('dbexit');
00620 @dbfcmd := GetAddress('dbfcmd');
00621 @dbfirstrow := GetAddress('dbfirstrow');
00622 @dbfreebuf := GetAddress('dbfreebuf');
00623 @dbloginfree := GetAddress('dbloginfree');
00624 @dbfreequal := GetAddress('dbfreequal');
00625 @dbgetchar := GetAddress('dbgetchar');
00626 @dbgetmaxprocs := GetAddress('dbgetmaxprocs');
00627 @dbgetoff := GetAddress('dbgetoff');
00628 @dbgetpacket := GetAddress('dbgetpacket');
00629 @dbgetrow := GetAddress('dbgetrow');
00630 @dbgetuserdata := GetAddress('dbgetuserdata');
00631 @dbhasretstat := GetAddress('dbhasretstat');
00632 @dbinit := GetAddress('dbinit');
00633 @dbisavail := GetAddress('dbisavail');
00634 @dbisopt := GetAddress('dbisopt');
00635 @dblastrow := GetAddress('dblastrow');
00636 @dblogin := GetAddress('dblogin');
00637 @dbmorecmds := GetAddress('dbmorecmds');
00638 @dbmoretext := GetAddress('dbmoretext');
00639 @dbname := GetAddress('dbname');
00640 @dbnextrow := GetAddress('dbnextrow');
00641 @dbnullbind := GetAddress('dbnullbind');
00642 @dbnumalts := GetAddress('dbnumalts');
00643 @dbnumcols := GetAddress('dbnumcols');
00644 @dbnumcompute := GetAddress('dbnumcompute');
00645 @dbnumorders := GetAddress('dbnumorders');
00646 @dbnumrets := GetAddress('dbnumrets');
00647 @dbopen := GetAddress('dbopen');
00648 @dbordercol := GetAddress('dbordercol');
00649 @dbprhead := GetAddress('dbprhead');
00650 @dbprrow := GetAddress('dbprrow');
00651 @dbprtype := GetAddress('dbprtype');
00652 @dbqual := GetAddress('dbqual');
00653 @dbreadtext := GetAddress('dbreadtext');
00654 @dbresults := GetAddress('dbresults');
00655 @dbretdata := GetAddress('dbretdata');
00656 @dbretlen := GetAddress('dbretlen');
00657 @dbretname := GetAddress('dbretname');
00658 @dbretstatus := GetAddress('dbretstatus');
00659 @dbrettype := GetAddress('dbrettype');
00660 @dbrows := GetAddress('dbrows');
00661 @dbrowtype := GetAddress('dbrowtype');
00662 @dbrpcinit := GetAddress('dbrpcinit');
00663 @dbrpcparam := GetAddress('dbrpcparam');
00664 @dbrpcsend := GetAddress('dbrpcsend');
00665 @dbrpwclr := GetAddress('dbrpwclr');
00666 @dbsetavail := GetAddress('dbsetavail');
00667 @dbsetmaxprocs := GetAddress('dbsetmaxprocs');
00668 @dbsetlname := GetAddress('dbsetlname');
00669 @dbsetlogintime := GetAddress('dbsetlogintime');
00670 @dbsetnull := GetAddress('dbsetnull');
00671 @dbsetopt := GetAddress('dbsetopt');
00672 @dbsettime := GetAddress('dbsettime');
00673 @dbsetuserdata := GetAddress('dbsetuserdata');
00674 @dbsqlexec := GetAddress('dbsqlexec');
00675 @dbsqlok := GetAddress('dbsqlok');
00676 @dbsqlsend := GetAddress('dbsqlsend');
00677 @dbstrcpy := GetAddress('dbstrcpy');
00678 @dbstrlen := GetAddress('dbstrlen');
00679 @dbtabbrowse := GetAddress('dbtabbrowse');
00680 @dbtabcount := GetAddress('dbtabcount');
00681 @dbtabname := GetAddress('dbtabname');
00682 @dbtabsource := GetAddress('dbtabsource');
00683 @dbtsnewlen := GetAddress('dbtsnewlen');
00684 @dbtsnewval := GetAddress('dbtsnewval');
00685 @dbtsput := GetAddress('dbtsput');
00686 @dbtxptr := GetAddress('dbtxptr');
00687 @dbtxtimestamp := GetAddress('dbtxtimestamp');
00688 @dbtxtsnewval := GetAddress('dbtxtsnewval');
00689 @dbtxtsput := GetAddress('dbtxtsput');
00690 @dbuse := GetAddress('dbuse');
00691 @dbvarylen := GetAddress('dbvarylen');
00692 @dbwillconvert := GetAddress('dbwillconvert');
00693 @dbwritetext := GetAddress('dbwritetext');
00694
00695 dbInit;
00696
00697 OldErrorHandle := dberrhandle(ErrorHandle);
00698 OldMessageHandle := dbmsghandle(MessageHandle);
00699 end;
00700
00701 procedure TZSybaseNativeLibraryLoader.FreeNativeLibrary;
00702 begin
00703 dberrhandle(OldErrorHandle);
00704 dbmsghandle(OldMessageHandle);
00705 dbExit;
00706
00707 inherited;
00708 end;
00709
00710 initialization
00711 SybaseErrors := TList.Create;
00712 SybaseMessages := TList.Create;
00713
00714 {$IFNDEF UNIX}
00715 LibraryLoader := TZSybaseNativeLibraryLoader.Create(
00716 [WINDOWS_DLL_LOCATION]);
00717 {$ELSE}
00718 LibraryLoader := TZSybaseNativeLibraryLoader.Create(
00719 [LINUX_DLL_LOCATION]);
00720 {$ENDIF}
00721
00722 finalization
00723 if Assigned(LibraryLoader) then
00724 LibraryLoader.Free;
00725
00726
00727 while SybaseMessages.Count > 0 do
00728 begin
00729 Dispose(SybaseMessages.Items[0]);
00730 SybaseMessages.Delete(0);
00731 end;
00732 if SybaseMessages <> nil then
00733 begin
00734 SybaseMessages.Free;
00735 SybaseMessages := nil;
00736 end;
00737
00738
00739 while SybaseErrors.Count > 0 do
00740 begin
00741 Dispose(SybaseErrors.Items[0]);
00742 SybaseErrors.Delete(0);
00743 end;
00744 if SybaseErrors <> nil then
00745 begin
00746 SybaseErrors.Free;
00747 SybaseErrors := nil;
00748 end;
00749 end.
00750
00751
00752