Ver Mensaje Individual
  #3  
Antiguo 06-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
El comportamiento que mencionas es raro porque, usualmente, el directorio de la aplicación tiene prioridad sobre cualquier otro directorio.

Como alternativa, lo único que se me ocurre es que coloques esta unidad en tu aplicación (pones la ruta adecuada en SQLite3DllLocation):

Código Delphi [-]
unit SqliteLoader;

interface

implementation

uses ZPlainSqlite3, ZPlainLoader;

const
  SQLite3DllLocation = 'c:\ruta\a\la\biblioteca\sqlite3.dll';

type
  {** Implements a loader for SQLite native library. }
  TZSQLiteNativeLibraryLoader = class(TZNativeLibraryLoader)
  public
    function Load: Boolean; override;
  end;

{ TZSQLiteNativeLibraryLoader }

function TZSQLiteNativeLibraryLoader.Load: Boolean;
begin
  Result := inherited Load;

{!}        @sqlite_open                   := GetAddress('sqlite3_open');
{!}        @sqlite_close                  := GetAddress('sqlite3_close');
{!}        @sqlite_column_count           := GetAddress('sqlite3_column_count');
{!}        @sqlite_column_bytes           := GetAddress('sqlite3_column_text');
{!}        @sqlite_column_name            := GetAddress('sqlite3_column_name');
{!}        @sqlite_column_decltype        := GetAddress('sqlite3_column_decltype');
{!}        @sqlite_exec                   := GetAddress('sqlite3_exec');
{!}        @sqlite_last_insert_rowid      := GetAddress('sqlite3_last_insert_rowid');
{!}        @sqlite_changes                := GetAddress('sqlite3_changes');
{!}        @sqlite_errmsg                 := GetAddress('sqlite3_errmsg');
{ ?-       @sqlite_last_statement_changes := GetAddress('sqlite3_last_statement_changes');}
{!}        @sqlite_interrupt              := GetAddress('sqlite3_interrupt');
{!}        @sqlite_complete               := GetAddress('sqlite3_complete');
{!}        @sqlite_busy_handler           := GetAddress('sqlite3_busy_handler');
{!}        @sqlite_busy_timeout           := GetAddress('sqlite3_busy_timeout');
{!}        @sqlite_get_table              := GetAddress('sqlite3_get_table');
{!}        @sqlite_free_table             := GetAddress('sqlite3_free_table');
{!}        @sqlite_freemem                := GetAddress('sqlite3_free');
{!}        @sqlite_libversion             := GetAddress('sqlite3_libversion');
{ ?-       @sqlite_libencoding            := GetAddress('sqlite3_libencoding');
{ ?-       @sqlite_create_function        := GetAddress('sqlite3_create_function');}
{ ?-       @sqlite_create_aggregate       := GetAddress('sqlite3_create_collation');}
{ ?-       @sqlite_function_type          := GetAddress('sqlite3_function_type');
{!}        @sqlite_set_result_string      := GetAddress('sqlite3_result_string');
{!}        @sqlite_set_result_int         := GetAddress('sqlite3_result_int');
{!}        @sqlite_set_result_double      := GetAddress('sqlite3_result_double');
{!}        @sqlite_set_result_error       := GetAddress('sqlite3_result_error');
{!}        @sqlite_user_data              := GetAddress('sqlite3_user_data');
{!}        @sqlite_aggregate_context      := GetAddress('sqlite3_aggregate_context');
{!}        @sqlite_aggregate_count        := GetAddress('sqlite3_aggregate_count');
{!}        @sqlite_set_authorizer         := GetAddress('sqlite3_set_authorizer');
{!}        @sqlite_trace                  := GetAddress('sqlite3_trace');
{!}        @sqlite_compile                := GetAddress('sqlite3_prepare');
{!}        @sqlite_step                   := GetAddress('sqlite3_step');
{!}        @sqlite_finalize               := GetAddress('sqlite3_finalize');
{!}        @sqlite_reset                  := GetAddress('sqlite3_reset');
{ ?-       @sqlite_bind                   := GetAddress('sqlite3_bind');}
{!}        @sqlite_progress_handler       := GetAddress('sqlite3_progress_handler');
{!}        @sqlite_commit_hook            := GetAddress('sqlite3_commit_hook');
{ ?-       @sqlite_open_encrypted         := GetAddress('sqlite3_open_encrypted');}
{!}        @sqlite_rekey                  := GetAddress('sqlite3_rekey');
{!}        @sqlite_key                    := GetAddress('sqlite3_key');
end;

initialization
  if Assigned(ZPlainSqlite3.LibraryLoader) then
    ZPlainSqlite3.LibraryLoader.Free;

  ZPlainSqlite3.LibraryLoader :=
    TZSQLiteNativeLibraryLoader.Create([SQLite3DllLocation]);
end.

Básicamente, esta unidad "copia" lo que hace la unidad ZPlainSqlite3 que es donde se carga la biblioteca de sqlite.

// Saludos
Responder Con Cita