Browse Source

* updated testpackages to use newest version of libhandler

git-svn-id: trunk@13996 -
ivost 16 years ago
parent
commit
e5ef111466

+ 357 - 404
packages/ibase/src/ibase60.inc

@@ -1,20 +1,11 @@
-{
-}
-
 {$MODE objfpc}
 {$MODE objfpc}
 {$MACRO on}
 {$MACRO on}
+{$PACKRECORDS C}
 
 
 interface
 interface
 
 
-{$IFDEF LinkDynamically}
-uses Dynlibs, sysutils,ctypes;
-
-Var
-  UseEmbeddedFirebird : Boolean = False;
-
-{$ELSE}
-uses Dynlibs,ctypes;
-{$ENDIF}
+uses
+  Dynlibs, ctypes;
 
 
 {$IFDEF Unix}
 {$IFDEF Unix}
   {$DEFINE extdecl:=cdecl}
   {$DEFINE extdecl:=cdecl}
@@ -31,58 +22,41 @@ uses Dynlibs,ctypes;
     fbembedlib = 'fbembed.dll';
     fbembedlib = 'fbembed.dll';
 {$ENDIF}
 {$ENDIF}
 
 
-type
-  {  Unsigned types }
-
-  UChar                = Byte;
-  UShort               = Word;
-  UInt                 = DWord;
-  ULong                = DWord;
-
-  { Signed types }
-
-  Int                  = LongInt;
-  Long                 = LongInt;
-  Short                = SmallInt;
-  Float                = Single;
-
-  { Pointers to basic types }
-
-  PInt                 = ^Int;
-  PShort               = ^Short;
-  PUShort              = ^UShort;
-  PLong                = ^Long;
-  PULong               = ^ULong;
-  PFloat               = ^Float;
-  PUChar               = ^UChar;
-  PVoid                = ^Pointer;
-
-{$PACKRECORDS C}
-
-  const
-     ISC_TRUE = 1;
-     ISC_FALSE = 0;
-  const
-     ISC__TRUE = ISC_TRUE;
-     ISC__FALSE = ISC_FALSE;
+const
+   ISC_TRUE      = 1;
+   ISC_FALSE     = 0;
+   ISC__TRUE     = ISC_TRUE;
+   ISC__FALSE    = ISC_FALSE;
 
 
 Type
 Type
-   ISC_USHORT    = word;
+   ISC_SCHAR     = char;
+   ISC_UCHAR     = cuchar;
+   ISC_SHORT     = cshort;
+   ISC_USHORT    = cushort;
    ISC_STATUS    = clong;
    ISC_STATUS    = clong;
-   ISC_INT64     = int64;
-   ISC_UINT64    = qword;
-   ISC_LONG      = Longint;
+   ISC_INT64     = clonglong;
+   ISC_UINT64    = culonglong;
+{$IFDEF CPU64}
+   ISC_LONG      = cint;
+   ISC_ULONG     = cuint;
+{$ELSE}
+   ISC_LONG      = clong;
+   ISC_ULONG     = culong;
+{$ENDIF}
 
 
-   PISC_USHORT = ^ISC_USHORT;
-   PISC_STATUS = ^ISC_STATUS;
-   PPISC_STATUS = ^PISC_STATUS;
-   PISC_INT64 = ^ISC_INT64;
-   PISC_UINT64 = ^ISC_UINT64;
-   PISC_LONG = ^ISC_LONG;
+   PISC_SCHAR    = pchar;
+   PISC_UCHAR    = ^ISC_UCHAR;
+   PISC_SHORT    = ^ISC_SHORT;
+   PISC_USHORT   = ^ISC_USHORT;
+   PISC_STATUS   = ^ISC_STATUS;
+   PPISC_STATUS  = ^PISC_STATUS;
+   PISC_INT64    = ^ISC_INT64;
+   PISC_UINT64   = ^ISC_UINT64;
+   PISC_LONG     = ^ISC_LONG;
 
 
-  const
-     DSQL_close = 1;
-     DSQL_drop = 2;
+const
+   DSQL_close    = 1;
+   DSQL_drop     = 2;
 
 
   {!!MVC
   {!!MVC
     Removed all ISC_FAR, ISC_EXPORT_VARARG and ISC_EXPORT
     Removed all ISC_FAR, ISC_EXPORT_VARARG and ISC_EXPORT
@@ -96,8 +70,8 @@ Type
 
 
   type
   type
 
 
-     ISC_DATE = longint;
-     ISC_TIME = dword;
+     ISC_DATE = cint;
+     ISC_TIME = cuint;
      ISC_TIMESTAMP = record
      ISC_TIMESTAMP = record
           timestamp_date : ISC_DATE;
           timestamp_date : ISC_DATE;
           timestamp_time : ISC_TIME;
           timestamp_time : ISC_TIME;
@@ -119,19 +93,57 @@ Type
   { Blob id structure                                                }
   { Blob id structure                                                }
   {                                                                  }
   {                                                                  }
 
 
-Type
+type
+  PGDS_QUAD = ^GDS_QUAD;
+  GDS_QUAD = record
+    gds_quad_high : ISC_LONG;
+    gds_quad_low : ISC_LONG;
+  end;
+  TGDS_QUAD = GDS_QUAD;
 
 
-   GDS_QUAD = record
-      gds_quad_high : ISC_LONG;
-      gds_quad_low : ISC_LONG;
-   end;
-   TGDS_QUAD = GDS_QUAD;
-   PGDS_QUAD = ^GDS_QUAD;
+  ISC_QUAD = GDS_QUAD;
+  TISC_QUAD = ISC_QUAD;
+  PISC_QUAD = ^ISC_QUAD;
+
+  {                               }
+  { InterBase Handle Definitions  }
+  {                               }
+
+  type
+     isc_att_handle = pointer;
+     isc_blob_handle = pointer;
+     isc_db_handle = pointer;
+     isc_form_handle = pointer;
+     isc_req_handle = pointer;
+     isc_stmt_handle = pointer;
+     isc_svc_handle = pointer;
+     isc_tr_handle = pointer;
+     isc_win_handle = pointer;
+     isc_callback = procedure ;extdecl;
+     isc_resv_handle = ISC_LONG;
+     tisc_att_handle = isc_att_handle;
+     tisc_blob_handle = isc_blob_handle;
+     tisc_db_handle = isc_db_handle;
+     tisc_form_handle = isc_form_handle;
+     tisc_req_handle = isc_req_handle;
+     tisc_stmt_handle = isc_stmt_handle;
+     tisc_svc_handle = isc_svc_handle;
+     tisc_tr_handle = isc_tr_handle;
+     tisc_win_handle = isc_win_handle;
+     tisc_callback = isc_callback;
+     tisc_resv_handle = isc_resv_handle;
+     pisc_att_handle  =^isc_att_handle ;
+     pisc_blob_handle  =^isc_blob_handle ;
+     pisc_db_handle  =^isc_db_handle ;
+     pisc_form_handle  =^isc_form_handle ;
+     pisc_req_handle  =^isc_req_handle ;
+     pisc_stmt_handle  =^isc_stmt_handle ;
+     pisc_svc_handle  =^isc_svc_handle ;
+     pisc_tr_handle  =^isc_tr_handle ;
+     pisc_win_handle  =^isc_win_handle ;
+     pisc_callback  = ^isc_callback;
+     pisc_resv_handle  =^isc_resv_handle ;
 
 
-Type
-     ISC_QUAD = GDS_QUAD;
-     TISC_QUAD = ISC_QUAD;
-     PISC_QUAD = ^ISC_QUAD;
 
 
 { !!field redefinitions !!
 { !!field redefinitions !!
      isc_quad_high = gds_quad_high;
      isc_quad_high = gds_quad_high;
@@ -141,31 +153,31 @@ Type
 type
 type
 
 
      ISC_ARRAY_BOUND = record
      ISC_ARRAY_BOUND = record
-          array_bound_lower : smallint;
-          array_bound_upper : smallint;
+          array_bound_lower : cshort;
+          array_bound_upper : cshort;
        end;
        end;
      TISC_ARRAY_BOUND = ISC_ARRAY_BOUND;
      TISC_ARRAY_BOUND = ISC_ARRAY_BOUND;
      PISC_ARRAY_BOUND = ^ISC_ARRAY_BOUND;
      PISC_ARRAY_BOUND = ^ISC_ARRAY_BOUND;
 
 
      ISC_ARRAY_DESC = record
      ISC_ARRAY_DESC = record
-          array_desc_dtype : byte;
-          array_desc_scale : char;
-          array_desc_length : word;
-          array_desc_field_name : array[0..31] of char;
-          array_desc_relation_name : array[0..31] of char;
-          array_desc_dimensions : smallint;
-          array_desc_flags : smallint;
+          array_desc_dtype : ISC_UCHAR;
+          array_desc_scale : ISC_SCHAR;
+          array_desc_length : cushort;
+          array_desc_field_name : array[0..31] of ISC_SCHAR;
+          array_desc_relation_name : array[0..31] of ISC_SCHAR;
+          array_desc_dimensions : cushort;
+          array_desc_flags : cushort;
           array_desc_bounds : array[0..15] of ISC_ARRAY_BOUND;
           array_desc_bounds : array[0..15] of ISC_ARRAY_BOUND;
        end;
        end;
      TISC_ARRAY_DESC = ISC_ARRAY_DESC;
      TISC_ARRAY_DESC = ISC_ARRAY_DESC;
      PISC_ARRAY_DESC = ^ISC_ARRAY_DESC;
      PISC_ARRAY_DESC = ^ISC_ARRAY_DESC;
 
 
      ISC_BLOB_DESC = record
      ISC_BLOB_DESC = record
-          blob_desc_subtype : smallint;
-          blob_desc_charset : smallint;
-          blob_desc_segment_size : smallint;
-          blob_desc_field_name : array[0..31] of byte;
-          blob_desc_relation_name : array[0..31] of byte;
+          blob_desc_subtype : cushort;
+          blob_desc_charset : cushort;
+          blob_desc_segment_size : cushort;
+          blob_desc_field_name : array[0..31] of ISC_UCHAR;
+          blob_desc_relation_name : array[0..31] of ISC_UCHAR;
        end;
        end;
      TISC_BLOB_DESC = ISC_BLOB_DESC;
      TISC_BLOB_DESC = ISC_BLOB_DESC;
      PISC_BLOB_DESC = ^ISC_BLOB_DESC ;
      PISC_BLOB_DESC = ^ISC_BLOB_DESC ;
@@ -193,24 +205,24 @@ type
   { Total length of blob  }
   { Total length of blob  }
   { Address of status vector  }
   { Address of status vector  }
   { Application specific data  }
   { Application specific data  }
-  TCTLSourceFunction  = function : isc_long;
+  TCTLSourceFunction  = function : ISC_STATUS;
 
 
      PISC_BLOB_CTL = ^ISC_BLOB_CTL ;
      PISC_BLOB_CTL = ^ISC_BLOB_CTL ;
      ISC_BLOB_CTL = record
      ISC_BLOB_CTL = record
           ctl_source : TCTLSourceFunction;     //  was ISC_STATUS ( *ctl_source)();
           ctl_source : TCTLSourceFunction;     //  was ISC_STATUS ( *ctl_source)();
           ctl_source_handle : pisc_blob_ctl  ; // was struct isc_blob_ctl  * ctl_source_handle;
           ctl_source_handle : pisc_blob_ctl  ; // was struct isc_blob_ctl  * ctl_source_handle;
-          ctl_to_sub_type : smallint;
-          ctl_from_sub_type : smallint;
-          ctl_buffer_length : word;
-          ctl_segment_length : word;
-          ctl_bpb_length : word;
-          ctl_bpb : Pchar;
-          ctl_buffer : Pbyte;
+          ctl_to_sub_type : cshort;
+          ctl_from_sub_type : cshort;
+          ctl_buffer_length : cushort;
+          ctl_segment_length : cushort;
+          ctl_bpb_length : cushort;
+          ctl_bpb : PISC_SCHAR;
+          ctl_buffer : PISC_UCHAR;
           ctl_max_segment : ISC_LONG;
           ctl_max_segment : ISC_LONG;
           ctl_number_segments : ISC_LONG;
           ctl_number_segments : ISC_LONG;
           ctl_total_length : ISC_LONG;
           ctl_total_length : ISC_LONG;
           ctl_status : PISC_STATUS;
           ctl_status : PISC_STATUS;
-          ctl_data : array[0..7] of longint;
+          ctl_data : array[0..7] of clong;
        end;
        end;
      TISC_BLOB_CTL = ISC_BLOB_CTL;
      TISC_BLOB_CTL = ISC_BLOB_CTL;
 
 
@@ -225,12 +237,12 @@ type
   { (mode) ? OUTPUT : INPUT  }
   { (mode) ? OUTPUT : INPUT  }
 
 
      BSTREAM = record
      BSTREAM = record
-          bstr_blob : pointer;
-          bstr_buffer : Pchar;
-          bstr_ptr : Pchar;
-          bstr_length : smallint;
-          bstr_cnt : smallint;
-          bstr_mode : char;
+          bstr_blob : isc_blob_handle;
+          bstr_buffer : PISC_SCHAR;
+          bstr_ptr : PISC_SCHAR;
+          bstr_length : cshort;
+          bstr_cnt : cshort;
+          bstr_mode : cchar;
        end;
        end;
      TBSTREAM = BSTREAM;
      TBSTREAM = BSTREAM;
      PBstream = ^BSTREAM;
      PBstream = ^BSTREAM;
@@ -268,20 +280,20 @@ type
   { NULL  }
   { NULL  }
 
 
      XSQLVAR = record
      XSQLVAR = record
-          sqltype : smallint;
-          sqlscale : smallint;
-          sqlsubtype : smallint;
-          sqllen : smallint;
-          sqldata : Pchar;
-          sqlind : Psmallint;
-          sqlname_length : smallint;
-          sqlname : array[0..31] of char;
-          relname_length : smallint;
-          relname : array[0..31] of char;
-          ownname_length : smallint;
-          ownname : array[0..31] of char;
-          aliasname_length : smallint;
-          aliasname : array[0..31] of char;
+          sqltype : ISC_SHORT;
+          sqlscale : ISC_SHORT;
+          sqlsubtype : ISC_SHORT;
+          sqllen : ISC_SHORT;
+          sqldata : PISC_SCHAR;
+          sqlind : PISC_SHORT;
+          sqlname_length : ISC_SHORT;
+          sqlname : array[0..31] of ISC_SCHAR;
+          relname_length : ISC_SHORT;
+          relname : array[0..31] of ISC_SCHAR;
+          ownname_length : ISC_SHORT;
+          ownname : array[0..31] of ISC_SCHAR;
+          aliasname_length : ISC_SHORT;
+          aliasname : array[0..31] of ISC_SCHAR;
        end;
        end;
      TXSQLVAR = XSQLVAR;
      TXSQLVAR = XSQLVAR;
      PXSQLVAR =^XSQLVAR;
      PXSQLVAR =^XSQLVAR;
@@ -293,11 +305,11 @@ type
   { first field address  }
   { first field address  }
 
 
      XSQLDA = record
      XSQLDA = record
-          version : smallint;
-          sqldaid : array[0..7] of char;
+          version : ISC_SHORT;
+          sqldaid : array[0..7] of ISC_SCHAR;
           sqldabc : ISC_LONG;
           sqldabc : ISC_LONG;
-          sqln : smallint;
-          sqld : smallint;
+          sqln : ISC_SHORT;
+          sqld : ISC_SHORT;
           sqlvar : array[0..0] of XSQLVAR;
           sqlvar : array[0..0] of XSQLVAR;
        end;
        end;
      TXSQLDA = XSQLDA;
      TXSQLDA = XSQLDA;
@@ -322,44 +334,6 @@ type
      SQL_DIALECT_V6 = 3;
      SQL_DIALECT_V6 = 3;
   { latest IB DIALECT  }
   { latest IB DIALECT  }
      SQL_DIALECT_CURRENT = SQL_DIALECT_V6;
      SQL_DIALECT_CURRENT = SQL_DIALECT_V6;
-  {                               }
-  { InterBase Handle Definitions  }
-  {                               }
-
-  type
-     isc_att_handle = pointer;
-     isc_blob_handle = pointer;
-     isc_db_handle = pointer;
-     isc_form_handle = pointer;
-     isc_req_handle = pointer;
-     isc_stmt_handle = pointer;
-     isc_svc_handle = pointer;
-     isc_tr_handle = pointer;
-     isc_win_handle = pointer;
-     isc_callback = procedure ;extdecl;
-     isc_resv_handle = ISC_LONG;
-     tisc_att_handle = isc_att_handle;
-     tisc_blob_handle = isc_blob_handle;
-     tisc_db_handle = isc_db_handle;
-     tisc_form_handle = isc_form_handle;
-     tisc_req_handle = isc_req_handle;
-     tisc_stmt_handle = isc_stmt_handle;
-     tisc_svc_handle = isc_svc_handle;
-     tisc_tr_handle = isc_tr_handle;
-     tisc_win_handle = isc_win_handle;
-     tisc_callback = isc_callback;
-     tisc_resv_handle = isc_resv_handle;
-     pisc_att_handle  =^isc_att_handle ;
-     pisc_blob_handle  =^isc_blob_handle ;
-     pisc_db_handle  =^isc_db_handle ;
-     pisc_form_handle  =^isc_form_handle ;
-     pisc_req_handle  =^isc_req_handle ;
-     pisc_stmt_handle  =^isc_stmt_handle ;
-     pisc_svc_handle  =^isc_svc_handle ;
-     pisc_tr_handle  =^isc_tr_handle ;
-     pisc_win_handle  =^isc_win_handle ;
-     pisc_callback  = ^isc_callback;
-     pisc_resv_handle  =^isc_resv_handle ;
 
 
 
 
   {                                    }
   {                                    }
@@ -398,19 +372,19 @@ type
   type
   type
 
 
      USER_SEC_DATA = record
      USER_SEC_DATA = record
-          sec_flags : smallint;
-          uid : longint;
-          gid : longint;
-          protocol : longint;
+          sec_flags : cshort;
+          uid : cint;
+          gid : cint;
+          protocol : cint;
           server : Pchar;
           server : Pchar;
-          user_name : Pchar;
-          password : Pchar;
-          group_name : Pchar;
-          first_name : Pchar;
-          middle_name : Pchar;
-          last_name : Pchar;
-          dba_user_name : Pchar;
-          dba_password : Pchar;
+          user_name : PISC_SCHAR;
+          password : PISC_SCHAR;
+          group_name : PISC_SCHAR;
+          first_name : PISC_SCHAR;
+          middle_name : PISC_SCHAR;
+          last_name : PISC_SCHAR;
+          dba_user_name : PISC_SCHAR;
+          dba_password : PISC_SCHAR;
        end;
        end;
      TUSER_SEC_DATA = USER_SEC_DATA;
      TUSER_SEC_DATA = USER_SEC_DATA;
      PUSER_SEC_DATA = ^USER_SEC_DATA;
      PUSER_SEC_DATA = ^USER_SEC_DATA;
@@ -1625,7 +1599,7 @@ type
      isc_blob_dbase_ole = 23;
      isc_blob_dbase_ole = 23;
      isc_blob_typed_binary = 24;
      isc_blob_typed_binary = 24;
 
 
-{$IFNDEF LinkDynamically}
+{$IFNDEF LOAD_DYNAMICALLY}
 
 
   {                          }
   {                          }
   { OSRI database functions  }
   { OSRI database functions  }
@@ -1743,7 +1717,7 @@ type
 
 
   function isc_event_block(_para1:PPchar; _para2:PPchar; _para3:word; args:array of const):ISC_LONG; cdecl; external gdslib;
   function isc_event_block(_para1:PPchar; _para2:PPchar; _para3:word; args:array of const):ISC_LONG; cdecl; external gdslib;
 
 
-  procedure isc_event_counts(_para1: PISC_STATUS; _para2: short; _para3: pchar; _para4: pchar); extdecl;  external gdslib;
+  procedure isc_event_counts(_para1: PISC_STATUS; _para2: cshort; _para3: pchar; _para4: pchar); extdecl;  external gdslib;
 
 
   procedure isc_expand_dpb(_para1:PPchar; _para2:Psmallint; args:array of const); cdecl; external gdslib;
   procedure isc_expand_dpb(_para1:PPchar; _para2:Psmallint; args:array of const); cdecl; external gdslib;
 
 
@@ -2222,7 +2196,7 @@ type
   function Bopen2:PBSTREAM; extdecl; external gdslib;
   function Bopen2:PBSTREAM; extdecl; external gdslib;
 {$ENDIF}
 {$ENDIF}
 
 
-{$ELSE} // LinkDynamically
+{$ELSE} // LOAD_DYNAMICALLY
 
 
 var
 var
 
 
@@ -2276,7 +2250,7 @@ var
   isc_encode_sql_time : procedure (_para1:pointer; _para2:PISC_TIME); extdecl;
   isc_encode_sql_time : procedure (_para1:pointer; _para2:PISC_TIME); extdecl;
   isc_encode_timestamp : procedure (_para1:pointer; _para2:PISC_TIMESTAMP); extdecl;
   isc_encode_timestamp : procedure (_para1:pointer; _para2:PISC_TIMESTAMP); extdecl;
   isc_event_block : function (_para1:PPchar; _para2:PPchar; _para3:word; args:array of const):ISC_LONG; cdecl;
   isc_event_block : function (_para1:PPchar; _para2:PPchar; _para3:word; args:array of const):ISC_LONG; cdecl;
-  isc_event_counts: procedure (_para1: PISC_STATUS; _para2: short; _para3: pchar; _para4: pchar); extdecl;
+  isc_event_counts: procedure (_para1: PISC_STATUS; _para2: cshort; _para3: pchar; _para4: pchar); extdecl;
   isc_expand_dpb : procedure (_para1:PPchar; _para2:Psmallint; args:array of const); cdecl;
   isc_expand_dpb : procedure (_para1:PPchar; _para2:Psmallint; args:array of const); cdecl;
   isc_modify_dpb : function (_para1:PPchar; _para2:Psmallint; _para3:word; _para4:Pchar; _para5:smallint):longint; extdecl;
   isc_modify_dpb : function (_para1:PPchar; _para2:Psmallint; _para3:word; _para4:Pchar; _para5:smallint):longint; extdecl;
   isc_free : function (_para1:Pchar):ISC_LONG; extdecl;
   isc_free : function (_para1:Pchar):ISC_LONG; extdecl;
@@ -2430,263 +2404,242 @@ var
   isc_suspend_window : function (_para1:PISC_STATUS; _para2:Pisc_win_handle):ISC_STATUS; extdecl;
   isc_suspend_window : function (_para1:PISC_STATUS; _para2:Pisc_win_handle):ISC_STATUS; extdecl;
 {$ENDIF}
 {$ENDIF}
 
 
-function InitialiseIBase60(Const LibraryName : String) : integer;
-function InitialiseIBase60 : integer;
-procedure ReleaseIBase60;
+function InitializeIBase(UseEmbeddedFirebird: Boolean = False): Integer;
+function InitializeIBase(const LibraryName: String): Integer;
+function TryInitializeIBase(const LibraryName: string): Integer;
+function ReleaseIBase: Integer;
 
 
-var IBaseLibraryHandle : TLibHandle;
+var
+  IBaseLibrary: TLibHandler;
 
 
-{$ENDIF}
+function InitialiseIBase60(Const LibraryName : String) : integer; deprecated;
+function InitialiseIBase60 : integer; deprecated;
+procedure ReleaseIBase60; deprecated;
 
 
-implementation
-
-{$IFDEF LinkDynamically}
+Var
+  UseEmbeddedFirebird: Boolean = False deprecated;
 
 
-ResourceString
-  SErrEmbeddedFailed = 'Can not load embedded Firebird client "%s". Check your installation.';
-  SErrDefaultsFailed = 'Can not load default Firebird clients ("%s" or "%s"). Check your installation.';
-  SErrLoadFailed     = 'Can not load Firebird client library "%s". Check your installation.';
-  SErrAlreadyLoaded  = 'Firebird interface already initialized from library %s.';
-  
-var 
-  RefCount : integer;
-  LoadedLibrary : String;
+{$ENDIF}
 
 
-Function TryInitialiseIBase60(Const LibraryName : String) : integer;
+implementation
 
 
+function XSQLDA_LENGTH(n: Integer): Integer;
 begin
 begin
-  Result := 0;
-  if (RefCount=0) then
-    begin
-    IBaseLibraryHandle:=LoadLibrary(LibraryName);
-    if (IBaseLibraryHandle=nilhandle) then
-      Exit;
-    inc(RefCount);
-    LoadedLibrary:=LibraryName;
-    pointer(isc_attach_database) := GetProcedureAddress(IBaseLibraryHandle,'isc_attach_database');
-    pointer(isc_array_gen_sdl) := GetProcedureAddress(IBaseLibraryHandle,'isc_array_gen_sdl');
-    pointer(isc_array_get_slice) := GetProcedureAddress(IBaseLibraryHandle,'isc_array_get_slice');
-    pointer(isc_array_lookup_bounds) := GetProcedureAddress(IBaseLibraryHandle,'isc_array_lookup_bounds');
-    pointer(isc_array_lookup_desc) := GetProcedureAddress(IBaseLibraryHandle,'isc_array_lookup_desc');
-    pointer(isc_array_set_desc) := GetProcedureAddress(IBaseLibraryHandle,'isc_array_set_desc');
-    pointer(isc_array_put_slice) := GetProcedureAddress(IBaseLibraryHandle,'isc_array_put_slice');
-    pointer(isc_blob_default_desc) := GetProcedureAddress(IBaseLibraryHandle,'isc_blob_default_desc');
-    pointer(isc_blob_gen_bpb) := GetProcedureAddress(IBaseLibraryHandle,'isc_blob_gen_bpb');
-    pointer(isc_blob_info) := GetProcedureAddress(IBaseLibraryHandle,'isc_blob_info');
-    pointer(isc_blob_lookup_desc) := GetProcedureAddress(IBaseLibraryHandle,'isc_blob_lookup_desc');
-    pointer(isc_blob_set_desc) := GetProcedureAddress(IBaseLibraryHandle,'isc_blob_set_desc');
-    pointer(isc_cancel_blob) := GetProcedureAddress(IBaseLibraryHandle,'isc_cancel_blob');
-    pointer(isc_cancel_events) := GetProcedureAddress(IBaseLibraryHandle,'isc_cancel_events');
-    pointer(isc_close_blob) := GetProcedureAddress(IBaseLibraryHandle,'isc_close_blob');
-    pointer(isc_commit_retaining) := GetProcedureAddress(IBaseLibraryHandle,'isc_commit_retaining');
-    pointer(isc_commit_transaction) := GetProcedureAddress(IBaseLibraryHandle,'isc_commit_transaction');
-    pointer(isc_create_blob) := GetProcedureAddress(IBaseLibraryHandle,'isc_create_blob');
-    pointer(isc_create_blob2) := GetProcedureAddress(IBaseLibraryHandle,'isc_create_blob2');
-    pointer(isc_create_database) := GetProcedureAddress(IBaseLibraryHandle,'isc_create_database');
-    pointer(isc_database_info) := GetProcedureAddress(IBaseLibraryHandle,'isc_database_info');
-    pointer(isc_decode_date) := GetProcedureAddress(IBaseLibraryHandle,'isc_decode_date');
-    pointer(isc_decode_sql_date) := GetProcedureAddress(IBaseLibraryHandle,'isc_decode_sql_date');
-    pointer(isc_decode_sql_time) := GetProcedureAddress(IBaseLibraryHandle,'isc_decode_sql_time');
-    pointer(isc_decode_timestamp) := GetProcedureAddress(IBaseLibraryHandle,'isc_decode_timestamp');
-    pointer(isc_detach_database) := GetProcedureAddress(IBaseLibraryHandle,'isc_detach_database');
-    pointer(isc_drop_database) := GetProcedureAddress(IBaseLibraryHandle,'isc_drop_database');
-    pointer(isc_dsql_allocate_statement) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_allocate_statement');
-    pointer(isc_dsql_alloc_statement2) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_alloc_statement2');
-    pointer(isc_dsql_describe) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_describe');
-    pointer(isc_dsql_describe_bind) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_describe_bind');
-    pointer(isc_dsql_exec_immed2) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_exec_immed2');
-    pointer(isc_dsql_execute) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_execute');
-    pointer(isc_dsql_execute2) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_execute2');
-    pointer(isc_dsql_execute_immediate) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_execute_immediate');
-    pointer(isc_dsql_fetch) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_fetch');
-    pointer(isc_dsql_finish) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_finish');
-    pointer(isc_dsql_free_statement) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_free_statement');
-    pointer(isc_dsql_insert) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_insert');
-    pointer(isc_dsql_prepare) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_prepare');
-    pointer(isc_dsql_set_cursor_name) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_set_cursor_name');
-    pointer(isc_dsql_sql_info) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_sql_info');
-    pointer(isc_encode_date) := GetProcedureAddress(IBaseLibraryHandle,'isc_encode_date');
-    pointer(isc_encode_sql_date) := GetProcedureAddress(IBaseLibraryHandle,'isc_encode_sql_date');
-    pointer(isc_encode_sql_time) := GetProcedureAddress(IBaseLibraryHandle,'isc_encode_sql_time');
-    pointer(isc_encode_timestamp) := GetProcedureAddress(IBaseLibraryHandle,'isc_encode_timestamp');
-    pointer(isc_event_block) := GetProcedureAddress(IBaseLibraryHandle,'isc_event_block');
-    pointer(isc_event_counts) := GetProcedureAddress(IBaseLibraryHandle,'isc_event_counts');
-    pointer(isc_expand_dpb) := GetProcedureAddress(IBaseLibraryHandle,'isc_expand_dpb');
-    pointer(isc_modify_dpb) := GetProcedureAddress(IBaseLibraryHandle,'isc_modify_dpb');
-    pointer(isc_free) := GetProcedureAddress(IBaseLibraryHandle,'isc_free');
-    pointer(isc_get_segment) := GetProcedureAddress(IBaseLibraryHandle,'isc_get_segment');
-    pointer(isc_get_slice) := GetProcedureAddress(IBaseLibraryHandle,'isc_get_slice');
-    pointer(isc_interprete) := GetProcedureAddress(IBaseLibraryHandle,'isc_interprete');
-    pointer(isc_open_blob) := GetProcedureAddress(IBaseLibraryHandle,'isc_open_blob');
-    pointer(isc_open_blob2) := GetProcedureAddress(IBaseLibraryHandle,'isc_open_blob2');
-    pointer(isc_prepare_transaction2) := GetProcedureAddress(IBaseLibraryHandle,'isc_prepare_transaction2');
-    pointer(isc_print_sqlerror) := GetProcedureAddress(IBaseLibraryHandle,'isc_print_sqlerror');
-    pointer(isc_print_status) := GetProcedureAddress(IBaseLibraryHandle,'isc_print_status');
-    pointer(isc_put_segment) := GetProcedureAddress(IBaseLibraryHandle,'isc_put_segment');
-    pointer(isc_put_slice) := GetProcedureAddress(IBaseLibraryHandle,'isc_put_slice');
-    pointer(isc_que_events) := GetProcedureAddress(IBaseLibraryHandle,'isc_que_events');
-    pointer(isc_rollback_retaining) := GetProcedureAddress(IBaseLibraryHandle,'isc_rollback_retaining');
-    pointer(isc_rollback_transaction) := GetProcedureAddress(IBaseLibraryHandle,'isc_rollback_transaction');
-    pointer(isc_start_multiple) := GetProcedureAddress(IBaseLibraryHandle,'isc_start_multiple');
-    pointer(isc_start_transaction) := GetProcedureAddress(IBaseLibraryHandle,'isc_start_transaction');
-    pointer(isc_sqlcode) := GetProcedureAddress(IBaseLibraryHandle,'isc_sqlcode');
-    pointer(isc_sql_interprete) := GetProcedureAddress(IBaseLibraryHandle,'isc_sql_interprete');
-    pointer(isc_transaction_info) := GetProcedureAddress(IBaseLibraryHandle,'isc_transaction_info');
-    pointer(isc_transact_request) := GetProcedureAddress(IBaseLibraryHandle,'isc_transact_request');
-    pointer(isc_vax_integer) := GetProcedureAddress(IBaseLibraryHandle,'isc_vax_integer');
-    pointer(isc_portable_integer) := GetProcedureAddress(IBaseLibraryHandle,'isc_portable_integer');
-    pointer(isc_add_user) := GetProcedureAddress(IBaseLibraryHandle,'isc_add_user');
-    pointer(isc_delete_user) := GetProcedureAddress(IBaseLibraryHandle,'isc_delete_user');
-    pointer(isc_modify_user) := GetProcedureAddress(IBaseLibraryHandle,'isc_modify_user');
-    pointer(isc_compile_request) := GetProcedureAddress(IBaseLibraryHandle,'isc_compile_request');
-    pointer(isc_compile_request2) := GetProcedureAddress(IBaseLibraryHandle,'isc_compile_request2');
-    pointer(isc_ddl) := GetProcedureAddress(IBaseLibraryHandle,'isc_ddl');
-    pointer(isc_prepare_transaction) := GetProcedureAddress(IBaseLibraryHandle,'isc_prepare_transaction');
-    pointer(isc_receive) := GetProcedureAddress(IBaseLibraryHandle,'isc_receive');
-    pointer(isc_reconnect_transaction) := GetProcedureAddress(IBaseLibraryHandle,'isc_reconnect_transaction');
-    pointer(isc_release_request) := GetProcedureAddress(IBaseLibraryHandle,'isc_release_request');
-    pointer(isc_request_info) := GetProcedureAddress(IBaseLibraryHandle,'isc_request_info');
-    pointer(isc_seek_blob) := GetProcedureAddress(IBaseLibraryHandle,'isc_seek_blob');
-    pointer(isc_send) := GetProcedureAddress(IBaseLibraryHandle,'isc_send');
-    pointer(isc_start_and_send) := GetProcedureAddress(IBaseLibraryHandle,'isc_start_and_send');
-    pointer(isc_start_request) := GetProcedureAddress(IBaseLibraryHandle,'isc_start_request');
-    pointer(isc_unwind_request) := GetProcedureAddress(IBaseLibraryHandle,'isc_unwind_request');
-    pointer(isc_wait_for_event) := GetProcedureAddress(IBaseLibraryHandle,'isc_wait_for_event');
-    pointer(isc_close) := GetProcedureAddress(IBaseLibraryHandle,'isc_close');
-    pointer(isc_declare) := GetProcedureAddress(IBaseLibraryHandle,'isc_declare');
-    pointer(isc_describe) := GetProcedureAddress(IBaseLibraryHandle,'isc_describe');
-    pointer(isc_describe_bind) := GetProcedureAddress(IBaseLibraryHandle,'isc_describe_bind');
-    pointer(isc_execute) := GetProcedureAddress(IBaseLibraryHandle,'isc_execute');
-    pointer(isc_execute_immediate) := GetProcedureAddress(IBaseLibraryHandle,'isc_execute_immediate');
-    pointer(isc_fetch) := GetProcedureAddress(IBaseLibraryHandle,'isc_fetch');
-    pointer(isc_open) := GetProcedureAddress(IBaseLibraryHandle,'isc_open');
-    pointer(isc_prepare) := GetProcedureAddress(IBaseLibraryHandle,'isc_prepare');
-    pointer(isc_dsql_execute_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_execute_m');
-    pointer(isc_dsql_execute2_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_execute2_m');
-    pointer(isc_dsql_execute_immediate_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_execute_immediate_m');
-    pointer(isc_dsql_exec_immed3_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_exec_immed3_m');
-    pointer(isc_dsql_fetch_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_fetch_m');
-    pointer(isc_dsql_insert_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_insert_m');
-    pointer(isc_dsql_prepare_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_prepare_m');
-    pointer(isc_dsql_release) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_release');
-    pointer(isc_embed_dsql_close) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_close');
-    pointer(isc_embed_dsql_declare) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_declare');
-    pointer(isc_embed_dsql_describe) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_describe');
-    pointer(isc_embed_dsql_describe_bind) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_describe_bind');
-    pointer(isc_embed_dsql_execute) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_execute');
-    pointer(isc_embed_dsql_execute2) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_execute2');
-    pointer(isc_embed_dsql_execute_immed) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_execute_immed');
-    pointer(isc_embed_dsql_fetch) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_fetch');
-    pointer(isc_embed_dsql_open) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_open');
-    pointer(isc_embed_dsql_open2) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_open2');
-    pointer(isc_embed_dsql_insert) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_insert');
-    pointer(isc_embed_dsql_prepare) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_prepare');
-    pointer(isc_embed_dsql_release) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_release');
-    pointer(BLOB_open) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_open');
-    pointer(BLOB_put) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_put');
-    pointer(BLOB_close) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_close');
-    pointer(BLOB_get) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_get');
-    pointer(BLOB_display) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_display');
-    pointer(BLOB_dump) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_dump');
-    pointer(BLOB_edit) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_edit');
-    pointer(BLOB_load) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_load');
-    pointer(BLOB_text_dump) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_text_dump');
-    pointer(BLOB_text_load) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_text_load');
-    pointer(Bopen) := GetProcedureAddress(IBaseLibraryHandle,'Bopen');
-{$IFDEF Unix}
-    pointer(Bopen2) := GetProcedureAddress(IBaseLibraryHandle,'Bopen2');
+  Result := SizeOf(XSQLDA) + (n - 1) * SizeOf(XSQLVAR);
+end;
+
+{$IFDEF LOAD_DYNAMICALLY}
+const
+  ibsymbols: array[0..140{$IFDEF UNIX}+20{$ENDIF}] of TLibSymbol = (
+    (pvar:@isc_attach_database; name:'isc_attach_database'; weak:false),
+    (pvar:@isc_array_gen_sdl; name:'isc_array_gen_sdl'; weak:false),
+    (pvar:@isc_array_get_slice; name:'isc_array_get_slice'; weak:false),
+    (pvar:@isc_array_lookup_bounds; name:'isc_array_lookup_bounds'; weak:false),
+    (pvar:@isc_array_lookup_desc; name:'isc_array_lookup_desc'; weak:false),
+    (pvar:@isc_array_set_desc; name:'isc_array_set_desc'; weak:false),
+    (pvar:@isc_array_put_slice; name:'isc_array_put_slice'; weak:false),
+    (pvar:@isc_blob_default_desc; name:'isc_blob_default_desc'; weak:false),
+    (pvar:@isc_blob_gen_bpb; name:'isc_blob_gen_bpb'; weak:false),
+    (pvar:@isc_blob_info; name:'isc_blob_info'; weak:false),
+    (pvar:@isc_blob_lookup_desc; name:'isc_blob_lookup_desc'; weak:false),
+    (pvar:@isc_blob_set_desc; name:'isc_blob_set_desc'; weak:false),
+    (pvar:@isc_cancel_blob; name:'isc_cancel_blob'; weak:false),
+    (pvar:@isc_cancel_events; name:'isc_cancel_events'; weak:false),
+    (pvar:@isc_close_blob; name:'isc_close_blob'; weak:false),
+    (pvar:@isc_commit_retaining; name:'isc_commit_retaining'; weak:false),
+    (pvar:@isc_commit_transaction; name:'isc_commit_transaction'; weak:false),
+    (pvar:@isc_create_blob; name:'isc_create_blob'; weak:false),
+    (pvar:@isc_create_blob2; name:'isc_create_blob2'; weak:false),
+    (pvar:@isc_create_database; name:'isc_create_database'; weak:false),
+    (pvar:@isc_database_info; name:'isc_database_info'; weak:false),
+    (pvar:@isc_decode_date; name:'isc_decode_date'; weak:false),
+    (pvar:@isc_decode_sql_date; name:'isc_decode_sql_date'; weak:false),
+    (pvar:@isc_decode_sql_time; name:'isc_decode_sql_time'; weak:false),
+    (pvar:@isc_decode_timestamp; name:'isc_decode_timestamp'; weak:false),
+    (pvar:@isc_detach_database; name:'isc_detach_database'; weak:false),
+    (pvar:@isc_drop_database; name:'isc_drop_database'; weak:false),
+    (pvar:@isc_dsql_allocate_statement; name:'isc_dsql_allocate_statement'; weak:false),
+    (pvar:@isc_dsql_alloc_statement2; name:'isc_dsql_alloc_statement2'; weak:false),
+    (pvar:@isc_dsql_describe; name:'isc_dsql_describe'; weak:false),
+    (pvar:@isc_dsql_describe_bind; name:'isc_dsql_describe_bind'; weak:false),
+    (pvar:@isc_dsql_exec_immed2; name:'isc_dsql_exec_immed2'; weak:false),
+    (pvar:@isc_dsql_execute; name:'isc_dsql_execute'; weak:false),
+    (pvar:@isc_dsql_execute2; name:'isc_dsql_execute2'; weak:false),
+    (pvar:@isc_dsql_execute_immediate; name:'isc_dsql_execute_immediate'; weak:false),
+    (pvar:@isc_dsql_fetch; name:'isc_dsql_fetch'; weak:false),
+    (pvar:@isc_dsql_finish; name:'isc_dsql_finish'; weak:false),
+    (pvar:@isc_dsql_free_statement; name:'isc_dsql_free_statement'; weak:false),
+    (pvar:@isc_dsql_insert; name:'isc_dsql_insert'; weak:false),
+    (pvar:@isc_dsql_prepare; name:'isc_dsql_prepare'; weak:false),
+    (pvar:@isc_dsql_set_cursor_name; name:'isc_dsql_set_cursor_name'; weak:false),
+    (pvar:@isc_dsql_sql_info; name:'isc_dsql_sql_info'; weak:false),
+    (pvar:@isc_encode_date; name:'isc_encode_date'; weak:false),
+    (pvar:@isc_encode_sql_date; name:'isc_encode_sql_date'; weak:false),
+    (pvar:@isc_encode_sql_time; name:'isc_encode_sql_time'; weak:false),
+    (pvar:@isc_encode_timestamp; name:'isc_encode_timestamp'; weak:false),
+    (pvar:@isc_event_block; name:'isc_event_block'; weak:false),
+    (pvar:@isc_event_counts; name:'isc_event_counts'; weak:false),
+    (pvar:@isc_expand_dpb; name:'isc_expand_dpb'; weak:false),
+    (pvar:@isc_modify_dpb; name:'isc_modify_dpb'; weak:false),
+    (pvar:@isc_free; name:'isc_free'; weak:false),
+    (pvar:@isc_get_segment; name:'isc_get_segment'; weak:false),
+    (pvar:@isc_get_slice; name:'isc_get_slice'; weak:false),
+    (pvar:@isc_interprete; name:'isc_interprete'; weak:false),
+    (pvar:@isc_open_blob; name:'isc_open_blob'; weak:false),
+    (pvar:@isc_open_blob2; name:'isc_open_blob2'; weak:false),
+    (pvar:@isc_prepare_transaction2; name:'isc_prepare_transaction2'; weak:false),
+    (pvar:@isc_print_sqlerror; name:'isc_print_sqlerror'; weak:false),
+    (pvar:@isc_print_status; name:'isc_print_status'; weak:false),
+    (pvar:@isc_put_segment; name:'isc_put_segment'; weak:false),
+    (pvar:@isc_put_slice; name:'isc_put_slice'; weak:false),
+    (pvar:@isc_que_events; name:'isc_que_events'; weak:false),
+    (pvar:@isc_rollback_retaining; name:'isc_rollback_retaining'; weak:false),
+    (pvar:@isc_rollback_transaction; name:'isc_rollback_transaction'; weak:false),
+    (pvar:@isc_start_multiple; name:'isc_start_multiple'; weak:false),
+    (pvar:@isc_start_transaction; name:'isc_start_transaction'; weak:false),
+    (pvar:@isc_sqlcode; name:'isc_sqlcode'; weak:false),
+    (pvar:@isc_sql_interprete; name:'isc_sql_interprete'; weak:false),
+    (pvar:@isc_transaction_info; name:'isc_transaction_info'; weak:false),
+    (pvar:@isc_transact_request; name:'isc_transact_request'; weak:false),
+    (pvar:@isc_vax_integer; name:'isc_vax_integer'; weak:false),
+    (pvar:@isc_portable_integer; name:'isc_portable_integer'; weak:false),
+    (pvar:@isc_add_user; name:'isc_add_user'; weak:false),
+    (pvar:@isc_delete_user; name:'isc_delete_user'; weak:false),
+    (pvar:@isc_modify_user; name:'isc_modify_user'; weak:false),
+    (pvar:@isc_compile_request; name:'isc_compile_request'; weak:false),
+    (pvar:@isc_compile_request2; name:'isc_compile_request2'; weak:false),
+    (pvar:@isc_ddl; name:'isc_ddl'; weak:false),
+    (pvar:@isc_prepare_transaction; name:'isc_prepare_transaction'; weak:false),
+    (pvar:@isc_receive; name:'isc_receive'; weak:false),
+    (pvar:@isc_reconnect_transaction; name:'isc_reconnect_transaction'; weak:false),
+    (pvar:@isc_release_request; name:'isc_release_request'; weak:false),
+    (pvar:@isc_request_info; name:'isc_request_info'; weak:false),
+    (pvar:@isc_seek_blob; name:'isc_seek_blob'; weak:false),
+    (pvar:@isc_send; name:'isc_send'; weak:false),
+    (pvar:@isc_start_and_send; name:'isc_start_and_send'; weak:false),
+    (pvar:@isc_start_request; name:'isc_start_request'; weak:false),
+    (pvar:@isc_unwind_request; name:'isc_unwind_request'; weak:false),
+    (pvar:@isc_wait_for_event; name:'isc_wait_for_event'; weak:false),
+    (pvar:@isc_close; name:'isc_close'; weak:false),
+    (pvar:@isc_declare; name:'isc_declare'; weak:false),
+    (pvar:@isc_describe; name:'isc_describe'; weak:false),
+    (pvar:@isc_describe_bind; name:'isc_describe_bind'; weak:false),
+    (pvar:@isc_execute; name:'isc_execute'; weak:false),
+    (pvar:@isc_execute_immediate; name:'isc_execute_immediate'; weak:false),
+    (pvar:@isc_fetch; name:'isc_fetch'; weak:false),
+    (pvar:@isc_open; name:'isc_open'; weak:false),
+    (pvar:@isc_prepare; name:'isc_prepare'; weak:false),
+    (pvar:@isc_dsql_execute_m; name:'isc_dsql_execute_m'; weak:false),
+    (pvar:@isc_dsql_execute2_m; name:'isc_dsql_execute2_m'; weak:false),
+    (pvar:@isc_dsql_execute_immediate_m; name:'isc_dsql_execute_immediate_m'; weak:false),
+    (pvar:@isc_dsql_exec_immed3_m; name:'isc_dsql_exec_immed3_m'; weak:false),
+    (pvar:@isc_dsql_fetch_m; name:'isc_dsql_fetch_m'; weak:false),
+    (pvar:@isc_dsql_insert_m; name:'isc_dsql_insert_m'; weak:false),
+    (pvar:@isc_dsql_prepare_m; name:'isc_dsql_prepare_m'; weak:false),
+    (pvar:@isc_dsql_release; name:'isc_dsql_release'; weak:false),
+    (pvar:@isc_embed_dsql_close; name:'isc_embed_dsql_close'; weak:false),
+    (pvar:@isc_embed_dsql_declare; name:'isc_embed_dsql_declare'; weak:false),
+    (pvar:@isc_embed_dsql_describe; name:'isc_embed_dsql_describe'; weak:false),
+    (pvar:@isc_embed_dsql_describe_bind; name:'isc_embed_dsql_describe_bind'; weak:false),
+    (pvar:@isc_embed_dsql_execute; name:'isc_embed_dsql_execute'; weak:false),
+    (pvar:@isc_embed_dsql_execute2; name:'isc_embed_dsql_execute2'; weak:false),
+    (pvar:@isc_embed_dsql_execute_immed; name:'isc_embed_dsql_execute_immed'; weak:false),
+    (pvar:@isc_embed_dsql_fetch; name:'isc_embed_dsql_fetch'; weak:false),
+    (pvar:@isc_embed_dsql_open; name:'isc_embed_dsql_open'; weak:false),
+    (pvar:@isc_embed_dsql_open2; name:'isc_embed_dsql_open2'; weak:false),
+    (pvar:@isc_embed_dsql_insert; name:'isc_embed_dsql_insert'; weak:false),
+    (pvar:@isc_embed_dsql_prepare; name:'isc_embed_dsql_prepare'; weak:false),
+    (pvar:@isc_embed_dsql_release; name:'isc_embed_dsql_release'; weak:false),
+    (pvar:@BLOB_open; name:'BLOB_open'; weak:false),
+    (pvar:@BLOB_put; name:'BLOB_put'; weak:false),
+    (pvar:@BLOB_close; name:'BLOB_close'; weak:false),
+    (pvar:@BLOB_get; name:'BLOB_get'; weak:false),
+    (pvar:@BLOB_display; name:'BLOB_display'; weak:false),
+    (pvar:@BLOB_dump; name:'BLOB_dump'; weak:false),
+    (pvar:@BLOB_edit; name:'BLOB_edit'; weak:false),
+    (pvar:@BLOB_load; name:'BLOB_load'; weak:false),
+    (pvar:@BLOB_text_dump; name:'BLOB_text_dump'; weak:false),
+    (pvar:@BLOB_text_load; name:'BLOB_text_load'; weak:false),
+    (pvar:@Bopen; name:'Bopen'; weak:false),
+{$IFDEF Unix} { weak functions, be careful! }
+    (pvar:@Bopen2; name:'Bopen2'; weak:true),
 {$ENDIF}
 {$ENDIF}
-    pointer(isc_ftof) := GetProcedureAddress(IBaseLibraryHandle,'isc_ftof');
-    pointer(isc_print_blr) := GetProcedureAddress(IBaseLibraryHandle,'isc_print_blr');
-    pointer(isc_set_debug) := GetProcedureAddress(IBaseLibraryHandle,'isc_set_debug');
-    pointer(isc_qtoq) := GetProcedureAddress(IBaseLibraryHandle,'isc_qtoq');
-    pointer(isc_vtof) := GetProcedureAddress(IBaseLibraryHandle,'isc_vtof');
-    pointer(isc_vtov) := GetProcedureAddress(IBaseLibraryHandle,'isc_vtov');
-    pointer(isc_version) := GetProcedureAddress(IBaseLibraryHandle,'isc_version');
+    (pvar:@isc_ftof; name:'isc_ftof'; weak:false),
+    (pvar:@isc_print_blr; name:'isc_print_blr'; weak:false),
+    (pvar:@isc_set_debug; name:'isc_set_debug'; weak:false),
+    (pvar:@isc_qtoq; name:'isc_qtoq'; weak:false),
+    (pvar:@isc_vtof; name:'isc_vtof'; weak:false),
+    (pvar:@isc_vtov; name:'isc_vtov'; weak:false),
+    (pvar:@isc_version; name:'isc_version'; weak:false),
 {$IFDEF Unix}
 {$IFDEF Unix}
-    pointer(isc_reset_fpe) := GetProcedureAddress(IBaseLibraryHandle,'isc_reset_fpe');
+    (pvar:@isc_reset_fpe; name:'isc_reset_fpe'; weak:false),
 {$ENDIF}
 {$ENDIF}
-    pointer(isc_service_attach) := GetProcedureAddress(IBaseLibraryHandle,'isc_service_attach');
-    pointer(isc_service_detach) := GetProcedureAddress(IBaseLibraryHandle,'isc_service_detach');
-    pointer(isc_service_query) := GetProcedureAddress(IBaseLibraryHandle,'isc_service_query');
-    pointer(isc_service_start) := GetProcedureAddress(IBaseLibraryHandle,'isc_service_start');
-{$IFDEF Unix}
-    pointer(isc_compile_map) := GetProcedureAddress(IBaseLibraryHandle,'isc_compile_map');
-    pointer(isc_compile_menu) := GetProcedureAddress(IBaseLibraryHandle,'isc_compile_menu');
-    pointer(isc_compile_sub_map) := GetProcedureAddress(IBaseLibraryHandle,'isc_compile_sub_map');
-    pointer(isc_create_window) := GetProcedureAddress(IBaseLibraryHandle,'isc_create_window');
-    pointer(isc_delete_window) := GetProcedureAddress(IBaseLibraryHandle,'isc_delete_window');
-    pointer(isc_drive_form) := GetProcedureAddress(IBaseLibraryHandle,'isc_drive_form');
-    pointer(isc_drive_menu) := GetProcedureAddress(IBaseLibraryHandle,'isc_drive_menu');
-    pointer(isc_form_delete) := GetProcedureAddress(IBaseLibraryHandle,'isc_form_delete');
-    pointer(isc_form_fetch) := GetProcedureAddress(IBaseLibraryHandle,'isc_form_fetch');
-    pointer(isc_form_insert) := GetProcedureAddress(IBaseLibraryHandle,'isc_form_insert');
-    pointer(isc_get_entree) := GetProcedureAddress(IBaseLibraryHandle,'isc_get_entree');
-    pointer(isc_initialize_menu) := GetProcedureAddress(IBaseLibraryHandle,'isc_initialize_menu');
-    pointer(isc_menu) := GetProcedureAddress(IBaseLibraryHandle,'isc_menu');
-    pointer(isc_load_form) := GetProcedureAddress(IBaseLibraryHandle,'isc_load_form');
-    pointer(isc_pop_window) := GetProcedureAddress(IBaseLibraryHandle,'isc_pop_window');
-    pointer(isc_put_entree) := GetProcedureAddress(IBaseLibraryHandle,'isc_put_entree');
-    pointer(isc_reset_form) := GetProcedureAddress(IBaseLibraryHandle,'isc_reset_form');
-    pointer(isc_suspend_window) := GetProcedureAddress(IBaseLibraryHandle,'isc_suspend_window');
+    (pvar:@isc_service_attach; name:'isc_service_attach'; weak:false),
+    (pvar:@isc_service_detach; name:'isc_service_detach'; weak:false),
+    (pvar:@isc_service_query; name:'isc_service_query'; weak:false),
+    (pvar:@isc_service_start; name:'isc_service_start'; weak:false)
+{$IFDEF Unix} { weak functions, be careful! }
+   ,(pvar:@isc_compile_map; name:'isc_compile_map'; weak:true),
+    (pvar:@isc_compile_menu; name:'isc_compile_menu'; weak:true),
+    (pvar:@isc_compile_sub_map; name:'isc_compile_sub_map'; weak:true),
+    (pvar:@isc_create_window; name:'isc_create_window'; weak:true),
+    (pvar:@isc_delete_window; name:'isc_delete_window'; weak:true),
+    (pvar:@isc_drive_form; name:'isc_drive_form'; weak:true),
+    (pvar:@isc_drive_menu; name:'isc_drive_menu'; weak:true),
+    (pvar:@isc_form_delete; name:'isc_form_delete'; weak:true),
+    (pvar:@isc_form_fetch; name:'isc_form_fetch'; weak:true),
+    (pvar:@isc_form_insert; name:'isc_form_insert'; weak:true),
+    (pvar:@isc_get_entree; name:'isc_get_entree'; weak:true),
+    (pvar:@isc_initialize_menu; name:'isc_initialize_menu'; weak:true),
+    (pvar:@isc_menu; name:'isc_menu'; weak:true),
+    (pvar:@isc_load_form; name:'isc_load_form'; weak:true),
+    (pvar:@isc_pop_window; name:'isc_pop_window'; weak:true),
+    (pvar:@isc_put_entree; name:'isc_put_entree'; weak:true),
+    (pvar:@isc_reset_form; name:'isc_reset_form'; weak:true),
+    (pvar:@isc_suspend_window; name:'isc_suspend_window'; weak:true)
 {$ENDIF}
 {$ENDIF}
-    end
-  else
-    inc(RefCount);
-  Result := RefCount;
-end;
-
-function InitialiseIBase60 : integer;
+  );
 
 
+function InitializeIBase(UseEmbeddedFirebird: Boolean): Integer;
 begin
 begin
-  Result := 0;
-  If UseEmbeddedFirebird then
-    begin
-    If (TryInitialiseIBase60(fbembedlib)=0) then
-      Raise EInOutError.CreateFmt(SErrEmbeddedFailed,[fbembedlib]);
-    end
+  if UseEmbeddedFirebird then
+    Result := InitializeLibrary(IBaseLibrary, fbembedlib)
   else
   else
-    begin
-    If (TryInitialiseIBase60(fbclib)=0) and
-       (TryInitialiseIBase60(gdslib)=0) then
-        Raise EInOutError.CreateFmt(SErrDefaultsFailed,[gdslib,fbclib]);
-    end;    
-  Result := RefCount;
+    Result := InitializeLibrary(IBaseLibrary);
 end;
 end;
 
 
-function InitialiseIBase60(Const LibraryName : String) : integer;
-
+function InitializeIBase(const LibraryName: String): Integer;
 begin
 begin
-  Result := TryInitialiseIBase60(LibraryName);
-  If Result = 0 then
-    Raise EInOutError.CreateFmt(SErrLoadFailed,[LibraryName])
-  else If (LibraryName<>LoadedLibrary) then
-    begin
-    Dec(RefCount);
-    Result := RefCount;
-    Raise EInOUtError.CreateFmt(SErrAlreadyLoaded,[LoadedLibrary]);
-    end;
+  Result := InitializeLibrary(IBaseLibrary, LibraryName);
 end;
 end;
 
 
+function TryInitializeIBase(const LibraryName: string): Integer;
+begin
+  Result := TryInitializeLibrary(IBaseLibrary, LibraryName);
+end;
 
 
-Procedure ReleaseIBase60;
+function ReleaseIBase: Integer;
+begin
+  Result := ReleaseLibrary(IBaseLibrary);
+end;
 
 
+function InitialiseIBase60(Const LibraryName : String) : integer;
 begin
 begin
-  if RefCount>1 then
-    Dec(RefCount)
-  else if UnloadLibrary(IBaseLibraryHandle) then 
-    begin
-    Dec(RefCount);
-    IBaseLibraryHandle := NilHandle;
-    LoadedLibrary:='';
-    end;
+  Result := InitializeIBase(LibraryName);
 end;
 end;
 
 
-{$ENDIF}
+function InitialiseIBase60: integer;
+begin
+  Result := InitializeIBase(UseEmbeddedFirebird);
+end;
 
 
-function XSQLDA_LENGTH(n: Integer): Integer;
+procedure ReleaseIBase60;
 begin
 begin
-  Result := SizeOf(XSQLDA) + (n - 1) * SizeOf(XSQLVAR);
+  ReleaseIBase;
 end;
 end;
 
 
+initialization
+  IBaseLibrary := LibraryHandler('Interbase', [gdslib,fbclib], @ibsymbols, length(ibsymbols));
+{$ENDIF}
+
 
 

+ 1 - 1
packages/ibase/src/ibase60.pp

@@ -2,7 +2,7 @@
 }
 }
 unit ibase60;
 unit ibase60;
 
 
-{$UNDEF LinkDynamically}
+{$UNDEF LOAD_DYNAMICALLY}
 
 
 {$i ibase60.inc}
 {$i ibase60.inc}
 
 

+ 1 - 1
packages/ibase/src/ibase60dyn.pp

@@ -11,7 +11,7 @@
 
 
 unit ibase60dyn;
 unit ibase60dyn;
 
 
-{$DEFINE LinkDynamically}
+{$DEFINE LOAD_DYNAMICALLY}
 
 
 {$i ibase60.inc}
 {$i ibase60.inc}
 
 

+ 12 - 19
packages/mysql/src/mysql.inc

@@ -1506,9 +1506,8 @@ uses
 {$endif}
 {$endif}
 
 
 {$IFDEF LOAD_DYNAMICALLY}
 {$IFDEF LOAD_DYNAMICALLY}
-function InitializeMysql(argc: cint = -1; argv: PPchar = nil; groups: PPchar = nil): Integer;
-function InitializeMysql(const LibraryName: String; argc: cint = -1; argv: PPchar = nil; groups: PPchar = nil): Integer;
-function TryInitializeMysql(const LibraryName: string; argc: cint = -1; argv: PPchar = nil; groups: PPchar = nil): Integer;
+function InitializeMysql(const LibraryName: String = ''; argc: cint = -1; argv: PPchar = nil; groups: PPchar = nil): Integer;
+function TryInitializeMysql(const LibraryName: string = ''; argc: cint = -1; argv: PPchar = nil; groups: PPchar = nil): Integer;
 function ReleaseMysql: Integer;
 function ReleaseMysql: Integer;
 
 
 var
 var
@@ -1689,16 +1688,20 @@ type
     groups: PPchar;
     groups: PPchar;
   end;
   end;
 
 
-function mysql_initialize(User: Pointer; Handler: PLibHandler; out ErrorMsg: String): Boolean;
+function mysql_initialize(User: Pointer; Handler: PLibHandler): Boolean;
 var
 var
   args: PMysqlArgs absolute User;
   args: PMysqlArgs absolute User;
 begin
 begin
-  Result := mysql_library_init(args^.argc, args^.argv, args^.groups) = 0;
+  if Assigned(args) then
+    Result := mysql_library_init(args^.argc, args^.argv, args^.groups) = 0
+  else
+    Result := mysql_library_init(0, nil, nil) = 0;
+
   if not Result then
   if not Result then
-    ErrorMsg := 'mysql_library_init failed';
+    AppendLibraryError(Handler^, 'mysql_library_init failed');
 end;
 end;
 
 
-procedure mysql_finalize(User: Pointer; Handler: PLibHandler);
+procedure mysql_finalize(Handler: PLibHandler);
 begin
 begin
   mysql_library_end();
   mysql_library_end();
 end;
 end;
@@ -1713,16 +1716,6 @@ begin
   Result := TryInitializeLibrary(MysqlLibrary, LibraryName, @args);
   Result := TryInitializeLibrary(MysqlLibrary, LibraryName, @args);
 end;
 end;
 
 
-function InitializeMysql(argc: cint; argv: PPchar; groups: PPchar): Integer;
-var
-  args: TMysqlArgs;
-begin
-  args.argc := argc;
-  args.argv := argv;
-  args.groups := groups;
-  Result := InitializeLibrary(MysqlLibrary, [mysqllib,mysqlvlib], @args);
-end;
-
 function InitializeMysql(const LibraryName: String; argc: cint; argv: PPchar; groups: PPchar): Integer;
 function InitializeMysql(const LibraryName: String; argc: cint; argv: PPchar; groups: PPchar): Integer;
 var
 var
   args: TMysqlArgs;
   args: TMysqlArgs;
@@ -1740,7 +1733,7 @@ end;
 
 
 function InitialiseMysql(argc: cint; argv: PPchar; groups: PPchar): Integer;
 function InitialiseMysql(argc: cint; argv: PPchar; groups: PPchar): Integer;
 begin
 begin
-  Result := InitializeMysql(argc, argv, groups);
+  Result := InitializeMysql('', argc, argv, groups);
 end;
 end;
 
 
 function InitialiseMysql(const LibraryName: String; argc: cint; argv: PPchar; groups: PPchar): Integer;
 function InitialiseMysql(const LibraryName: String; argc: cint; argv: PPchar; groups: PPchar): Integer;
@@ -1754,7 +1747,7 @@ begin
 end;
 end;
 
 
 initialization
 initialization
-  MysqlLibrary := LibraryHandler('mysql', @mysql_symbols, Length(mysql_symbols), @mysql_initialize, @mysql_finalize);
+  MysqlLibrary := LibraryHandler('mysql', [mysqllib,mysqlvlib], @mysql_symbols, Length(mysql_symbols), @mysql_initialize, @mysql_finalize);
 {$ENDIF}
 {$ENDIF}
 
 
 end.
 end.

+ 4 - 10
packages/sqlite/src/sqlite3.inc

@@ -5716,9 +5716,8 @@ const
   SQLITE_TESTCTRL_BITVEC_TEST              = 8;
   SQLITE_TESTCTRL_BITVEC_TEST              = 8;
 
 
 {$IFDEF LOAD_DYNAMICALLY}
 {$IFDEF LOAD_DYNAMICALLY}
-function InitializeSqlite: Integer;
-function InitializeSqlite(const LibraryName: String): Integer;
-function TryInitializeSqlite(const LibraryName: string): Integer;
+function InitializeSqlite(const LibraryName: String = ''): Integer;
+function TryInitializeSqlite(const LibraryName: string = ''): Integer;
 function ReleaseSqlite: Integer;
 function ReleaseSqlite: Integer;
 
 
 var
 var
@@ -5910,11 +5909,6 @@ begin
   Result := TryInitializeLibrary(SqliteLibrary, LibraryName);
   Result := TryInitializeLibrary(SqliteLibrary, LibraryName);
 end;
 end;
 
 
-function InitializeSqlite: Integer;
-begin
-  Result := InitializeLibrary(SqliteLibrary, sqlite3lib);
-end;
-
 function InitializeSqlite(const LibraryName: String): Integer;
 function InitializeSqlite(const LibraryName: String): Integer;
 begin
 begin
   Result := InitializeLibrary(SqliteLibrary, LibraryName);
   Result := InitializeLibrary(SqliteLibrary, LibraryName);
@@ -5927,7 +5921,7 @@ end;
 
 
 function InitialiseSqlite: Integer;
 function InitialiseSqlite: Integer;
 begin
 begin
-  Result := InitializeSqlite;
+  Result := InitializeSqlite('');
 end;
 end;
 
 
 function InitialiseSqlite(const LibraryName: String): Integer;
 function InitialiseSqlite(const LibraryName: String): Integer;
@@ -5941,7 +5935,7 @@ begin
 end;
 end;
 
 
 initialization
 initialization
-  SqliteLibrary := LibraryHandler('sqlite', @sqlite3_symbols, Length(sqlite3_symbols));
+  SqliteLibrary := LibraryHandler('sqlite', [sqlite3lib], @sqlite3_symbols, Length(sqlite3_symbols));
 {$ENDIF}
 {$ENDIF}
 
 
 end.
 end.

+ 24 - 114
packages/zorba/examples/simple/simple.lpi

@@ -35,8 +35,8 @@
         <Filename Value="simple.lpr"/>
         <Filename Value="simple.lpr"/>
         <IsPartOfProject Value="True"/>
         <IsPartOfProject Value="True"/>
         <UnitName Value="simple"/>
         <UnitName Value="simple"/>
-        <CursorPos X="4" Y="69"/>
-        <TopLine Value="60"/>
+        <CursorPos X="1" Y="12"/>
+        <TopLine Value="1"/>
         <EditorIndex Value="0"/>
         <EditorIndex Value="0"/>
         <UsageCount Value="20"/>
         <UsageCount Value="20"/>
         <Loaded Value="True"/>
         <Loaded Value="True"/>
@@ -46,17 +46,13 @@
         <UnitName Value="zorba"/>
         <UnitName Value="zorba"/>
         <CursorPos X="7" Y="3"/>
         <CursorPos X="7" Y="3"/>
         <TopLine Value="1"/>
         <TopLine Value="1"/>
-        <EditorIndex Value="4"/>
         <UsageCount Value="10"/>
         <UsageCount Value="10"/>
-        <Loaded Value="True"/>
       </Unit1>
       </Unit1>
       <Unit2>
       <Unit2>
         <Filename Value="../../src/zorba.inc"/>
         <Filename Value="../../src/zorba.inc"/>
         <CursorPos X="5" Y="937"/>
         <CursorPos X="5" Y="937"/>
         <TopLine Value="915"/>
         <TopLine Value="915"/>
-        <EditorIndex Value="5"/>
         <UsageCount Value="10"/>
         <UsageCount Value="10"/>
-        <Loaded Value="True"/>
       </Unit2>
       </Unit2>
       <Unit3>
       <Unit3>
         <Filename Value="../../../../../zorba/zorba/include/simplestore/simplestorec.h"/>
         <Filename Value="../../../../../zorba/zorba/include/simplestore/simplestorec.h"/>
@@ -68,16 +64,14 @@
       <Unit4>
       <Unit4>
         <Filename Value="../../src/zorba_error.inc"/>
         <Filename Value="../../src/zorba_error.inc"/>
         <CursorPos X="5" Y="28"/>
         <CursorPos X="5" Y="28"/>
-        <TopLine Value="6"/>
-        <EditorIndex Value="3"/>
+        <TopLine Value="1"/>
         <UsageCount Value="10"/>
         <UsageCount Value="10"/>
-        <Loaded Value="True"/>
       </Unit4>
       </Unit4>
       <Unit5>
       <Unit5>
         <Filename Value="../../../../../zorba/zorba/include/zorba/zorbac.h"/>
         <Filename Value="../../../../../zorba/zorba/include/zorba/zorbac.h"/>
         <CursorPos X="17" Y="262"/>
         <CursorPos X="17" Y="262"/>
         <TopLine Value="312"/>
         <TopLine Value="312"/>
-        <EditorIndex Value="7"/>
+        <EditorIndex Value="4"/>
         <UsageCount Value="10"/>
         <UsageCount Value="10"/>
         <Loaded Value="True"/>
         <Loaded Value="True"/>
         <SyntaxHighlighter Value="C++"/>
         <SyntaxHighlighter Value="C++"/>
@@ -86,7 +80,7 @@
         <Filename Value="../../src/zorba_options.inc"/>
         <Filename Value="../../src/zorba_options.inc"/>
         <CursorPos X="3" Y="104"/>
         <CursorPos X="3" Y="104"/>
         <TopLine Value="82"/>
         <TopLine Value="82"/>
-        <EditorIndex Value="6"/>
+        <EditorIndex Value="3"/>
         <UsageCount Value="10"/>
         <UsageCount Value="10"/>
         <Loaded Value="True"/>
         <Loaded Value="True"/>
       </Unit6>
       </Unit6>
@@ -108,127 +102,43 @@
         <Loaded Value="True"/>
         <Loaded Value="True"/>
       </Unit8>
       </Unit8>
     </Units>
     </Units>
-    <JumpHistory Count="30" HistoryIndex="29">
+    <JumpHistory Count="9" HistoryIndex="8">
       <Position1>
       <Position1>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="13" Column="53" TopLine="1"/>
+        <Filename Value="simple.lpr"/>
+        <Caret Line="16" Column="23" TopLine="2"/>
       </Position1>
       </Position1>
       <Position2>
       <Position2>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="81" Column="39" TopLine="59"/>
+        <Filename Value="simple.lpr"/>
+        <Caret Line="22" Column="11" TopLine="1"/>
       </Position2>
       </Position2>
       <Position3>
       <Position3>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="322" Column="45" TopLine="300"/>
+        <Filename Value="simple.lpr"/>
+        <Caret Line="21" Column="20" TopLine="1"/>
       </Position3>
       </Position3>
       <Position4>
       <Position4>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="327" Column="39" TopLine="300"/>
+        <Filename Value="simple.lpr"/>
+        <Caret Line="20" Column="4" TopLine="1"/>
       </Position4>
       </Position4>
       <Position5>
       <Position5>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="333" Column="111" TopLine="300"/>
+        <Filename Value="simple.lpr"/>
+        <Caret Line="79" Column="30" TopLine="52"/>
       </Position5>
       </Position5>
       <Position6>
       <Position6>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="1953" Column="26" TopLine="1931"/>
+        <Filename Value="simple.lpr"/>
+        <Caret Line="92" Column="5" TopLine="59"/>
       </Position6>
       </Position6>
       <Position7>
       <Position7>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="1956" Column="19" TopLine="1931"/>
+        <Filename Value="simple.lpr"/>
+        <Caret Line="83" Column="18" TopLine="59"/>
       </Position7>
       </Position7>
       <Position8>
       <Position8>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="1961" Column="42" TopLine="1931"/>
+        <Filename Value="simple.lpr"/>
+        <Caret Line="62" Column="1" TopLine="25"/>
       </Position8>
       </Position8>
       <Position9>
       <Position9>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="1965" Column="46" TopLine="1931"/>
-      </Position9>
-      <Position10>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="1969" Column="73" TopLine="1931"/>
-      </Position10>
-      <Position11>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="1972" Column="42" TopLine="1943"/>
-      </Position11>
-      <Position12>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="6" Column="1" TopLine="1"/>
-      </Position12>
-      <Position13>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="81" Column="39" TopLine="59"/>
-      </Position13>
-      <Position14>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="322" Column="45" TopLine="300"/>
-      </Position14>
-      <Position15>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="327" Column="39" TopLine="300"/>
-      </Position15>
-      <Position16>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="333" Column="111" TopLine="300"/>
-      </Position16>
-      <Position17>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="1953" Column="26" TopLine="1931"/>
-      </Position17>
-      <Position18>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="1956" Column="19" TopLine="1931"/>
-      </Position18>
-      <Position19>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="1961" Column="42" TopLine="1931"/>
-      </Position19>
-      <Position20>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="1965" Column="46" TopLine="1931"/>
-      </Position20>
-      <Position21>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="1969" Column="73" TopLine="1931"/>
-      </Position21>
-      <Position22>
-        <Filename Value="../../src/zorba.inc"/>
-        <Caret Line="1972" Column="42" TopLine="1931"/>
-      </Position22>
-      <Position23>
         <Filename Value="simple.lpr"/>
         <Filename Value="simple.lpr"/>
-        <Caret Line="16" Column="23" TopLine="2"/>
-      </Position23>
-      <Position24>
-        <Filename Value="simple.lpr"/>
-        <Caret Line="22" Column="11" TopLine="1"/>
-      </Position24>
-      <Position25>
-        <Filename Value="simple.lpr"/>
-        <Caret Line="21" Column="20" TopLine="1"/>
-      </Position25>
-      <Position26>
-        <Filename Value="simple.lpr"/>
-        <Caret Line="20" Column="4" TopLine="1"/>
-      </Position26>
-      <Position27>
-        <Filename Value="simple.lpr"/>
-        <Caret Line="79" Column="30" TopLine="52"/>
-      </Position27>
-      <Position28>
-        <Filename Value="simple.lpr"/>
-        <Caret Line="92" Column="5" TopLine="59"/>
-      </Position28>
-      <Position29>
-        <Filename Value="simple.lpr"/>
-        <Caret Line="83" Column="18" TopLine="59"/>
-      </Position29>
-      <Position30>
-        <Filename Value="simple.lpr"/>
-        <Caret Line="62" Column="1" TopLine="25"/>
-      </Position30>
+        <Caret Line="84" Column="18" TopLine="60"/>
+      </Position9>
     </JumpHistory>
     </JumpHistory>
   </ProjectOptions>
   </ProjectOptions>
   <CompilerOptions>
   <CompilerOptions>