![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Error uso de sqlite3.dll por Zeos
Saludos:
Resulta que teniendo una sqlite3.dll en las carpetas del sistema (windows, system32, etc) tiene prioridad que la propia distribuida en nuestra aplicación que normalmente ponemos en la carpeta de nuestra app. Me he dado cuenta de esto puesto que la que tengo en la carpeta de mi app es la última de la distro del original sitio sqlite.com pero sin embargo cuando llamo la función para ver la versión (usando delphi, claro está) me informa que la versión es inferior, y esta corresponde con las dll distribuidas por otras aplicaciones como Opera, Adobe, etc ya previamente instaladas. Cómo puedo obligar a Zeos a que utilice la dl que está en la carpeta de mi app y no en la que encuentre por defecto en las carpetas del sistema? Gracias |
#2
|
||||
|
||||
En el título que has puesto (Error uso de sqlite3.dll por Zeos) haces mención a un error, ¿cual es?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
||||
|
||||
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):
Básicamente, esta unidad "copia" lo que hace la unidad ZPlainSqlite3 que es donde se carga la biblioteca de sqlite. // Saludos |
#4
|
||||
|
||||
Otra forma, menos drástica que la anterior:
Importas la función SetDllDirectory (al menos en Delphi 7 no está importada, posiblemente en versiones posteriores ya lo esté)
Y, antes de abrir la conexión, la usas para agregar el directorio deseado a la búsqueda de dllls:
Tal como dice la documentación de SetDllDirectory, la ruta que pongas tendrá preferencia sobre cualquier otra, excepto la de la aplicación. // Saludos |
#5
|
|||
|
|||
Gracias por las respuestas
Saludos.
A mi también me sorprende que ocurra esta situación con la dll de la misma carpeta, pero lo probé en varias ocasiones, incluso en una PC Virtual virgen que tengo y entonces es como único reconoce la dll de la carpeta, puesto que en el sistema no hay ninguna. Ok, trataré de utilizar ambas variantes. Ya me había metido en la unidad que mencionas, pero no me atreví a modificar nada. Sobre la segunda variante, me preocupa que estableciendo esta dirección como preferencial, las app no me quieran reconocer otras dll del sistema que usamos cotidianamente y quizás no nos demos cuenta que se usan (printers, etc). Aunque no creo que esto sea una limitación, pues si no encuentra nada en mi carpeta, saltaría entonces para la del sistema, pienso que sea así.. Muchas gracias Luego les comento como me fue. |
#6
|
|||
|
|||
Se me olvidó decirles que ahora estoy usando el ZEOSDBO-7.0.0-alpha
Muchas gracias |
#7
|
|||
|
|||
Esta alternativa, simple, tal vez te funcione, Sapiem:
Pongo esto como primera linea en onFormCreate: ////SQLITE3 VERSION ........................... SQLiteLibraryName:='sqlite3.dll'; ////........................................... y como no tiene "path", usa el sqlite3.dll que esta en el directorio del proyecto, y es el mismo .dll que acompaña al .exe resultante, tambien en su mismo folder. Tambien tengo el mismo .dll en el folder donde esta instalado Lazaro (en mi caso). Si quieres aun mas control, le puedes cambiar el nombre al .dll (en la aplicacion) siempre y cuando coincida con el nombre en el codigo mostrado. |
#8
|
||||
|
||||
¿Dónde está declarada la variable SQLiteLibraryName?
// Saludos |
#9
|
|||
|
|||
Es interna en Lazarus. No tengo que declararla antes. Tal vez sea parte de instalar el paquete SQlite3. |
#10
|
||||
|
||||
Es que a mi me da el error "Identifier not found"
// Saludos |
#11
|
|||
|
|||
En delphi o en Lazarus?
En Lazarus, realmente es una propiedad de SQLite3.Connection, pero no es visible en diseño. Asi que lo que mencione, depende de que se use ese componente. Me interesa saber que componente usan para la conexion con SQLite3, si viene ya en Delphi, o es externo, pues me intersaria probar otros, si acaso no sea ese componente el que me cause ciertos prolbemas. |
#12
|
||||
|
||||
Sí, ya vi. Está definida en la sección interface de la unidad sqlite3conn. Pero esto es para los componentes que vienen con Lázarus, no sirve para Zeos. La variable equivalente en zeos está definida en una sección implementation por lo que no puede modificarse.
// Saludos |
#13
|
|||
|
|||
Sobre SQLiteLibraryName
Entonces no hay SQLiteLibraryName o algo similar para Delphi, porque me interesa eso de poder también asignarle otro nombre a la dll.
|
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Desactivar journal con ZeosBD y Sqlite3 | fide_uci | Conexión con bases de datos | 1 | 21-05-2012 16:29:47 |
Ayuda con Insercion lentisima en SQLite3 | fide_uci | Conexión con bases de datos | 4 | 19-01-2012 03:55:52 |
¿como compilar sqlite3.dll ? | JXJ | C++ Builder | 2 | 07-12-2010 22:37:50 |
SQLite3 devuelve 01-01-1899 | salvica | SQL | 3 | 03-02-2010 11:56:55 |
acceso a datos sqlite3 lazarus | anubis | Lazarus, FreePascal, Kylix, etc. | 2 | 10-12-2009 18:12:29 |
![]() |
|