PDA

Ver la Versión Completa : Atención con las versiones de MIDAS.DLL


AzidRain
18-03-2009, 00:25:27
No se si esto le haya pasado a alguien mas pero de todos modos pongo la nota para que en su caso quede precedente.

Desarrollé una aplicación usando ClientDataSets, como ya sabemos, cuando los utilizamos es necesario incluir midas.dll en el deploy de nuestra aplicación. Bueno pues resulta que utilizo un pendrive para andar transportando mi apliciación, un dia con un cliente me di cuenta que no llevaba el midas.dll por lo que mi aplicación no más no quería, entonces copie una version de midas.dll que tenía por ahi y aparentemente la aplicación funcionaba bien, solo que en una parte determinada me empezó a lanzar mensajes de error como "RecordIndex out of range" o "Key Violation" lo que obviamente nos hace pensar inmediatamente en errores de programación, revisaba el programa en la pc de desarrollo y funcionaba perfectamente.

Decidí probar en otras pcs y el mismo resultado, hasta que en una sí funcionó...mmmm,... me puse a pensar que tiene esta que no tienen las otras y me di cuenta que tenía instalado D2007 por lo que pensé que la cosa podría ir por algun dll (midas en este caso) que fuera más nuevo...hice una busqueda y encontre que el midas.dll en system32 de esa pc era más nuevo que el que yo tenía así que lo copie al pendrive y trate de ejecutar de nuevo el programa...lo mismo no funcionaba. Entonces lo copié a system32 de la pc y entonces si, todo tranquilo.

Conclusión, se debe incluir el midas.dll correspondiente a la versión de delphi con que se desarrolló el programa, el cual está en system32 de la pc con Delphi. Además se tiene que copiar forzosamente en ese path de la pc cliente para que la cosa funcione. Me desconcierta porque pensaba que primero se busca en el directorio actual (el del exe) y si no se encuentra la dll entonces se va a las carpetas incluidas en la variable de entorno PATH.

Tontera si quieren, pero el comportamiento que se presentá es muy engañoso.

Kipow
18-03-2009, 09:01:18
Es mas facil incluir en el uses del form principal la unidad midaslib y listo. cerobolas.

Saludos.

Al González
18-03-2009, 16:58:52
De la valiosa ayuda de Delphi:

Database applications that use client datasets such as TClientDataSet or dataset providers require you to include midaslib.dcu (for static linking when providing a stand-alone executable); if you are packaging your application (with the executable and any needed DLLs), you need to include Midas.dll.

Con esto queda a criterio del desarrollador distribuir la biblioteca Midas.dll por separado o compilar el / los ejecutable(s) con la unidad MidasLib.

Por otra parte, creo que la DLL puede ser registrada en Windows, con lo cual LoadLibrary la buscaría en la ruta con la que fue registrada. Aunque esto último no lo he comprobado.

Saludos.

Al González. :)