La manera más fácil de usar las funciones de un paquete es "usar" la unidad que contiene la función, llamarla como de costumbre y poner el paquete en la lista de paquetes de tiempo de ejecución de su proyecto. Para que funcione, existen algunos requisitos:
- Su proyecto debe utilizar la misma versión de Delphi que se utilizó para compilar el paquete.
- Debe tener acceso al archivo DCU para la unidad, o al menos al archivo DCP para el paquete.
- El paquete debe existir en la ruta de búsqueda del sistema operativo cuando se inicia el programa.
Si no puede satisfacer el tercer requisito, o si no desea tener el paquete cargado todo el tiempo, puede llamar al LoadPackage
en su lugar. La forma de hacerlo funcionar es tener otro paquete que esté cargado todo el tiempo. Será utilizado tanto por su proyecto como por el paquete que desea cargar. El paquete intermedio expondrá una interfaz (como algunas funciones de registro, una variable o una clase) que el paquete principal puede usar para indicar a la aplicación cuáles son sus funciones. No podrá "usar" directamente la unidad del paquete principal en su aplicación.
Si no puede satisfacer los dos primeros requisitos, existe la forma mucho más difícil, que es también lo que tendría que hacer si su aplicación no está escrita en Delphi o C++ Builder. Trate el paquete como una DLL ordinaria. Cargarlo con LoadLibrary
. Use GetProcAddress
para cargar su función Initialize
y luego llámelo. (Recuerde que la convención de llamadas es register
, no stdcall
). A continuación, cargue la dirección de la función que desea llamar, teniendo en cuenta que el nombre de la función se ha alterado para incluir cierta información de unidad y tipo. Llame a la función Finalize
antes de llamar al FreeLibrary
. Compruebe la fuente para LoadPackage
y UnloadPackage
; si necesita llamar al CheckForDuplicateUnits
, probablemente dependa de si puede satisfacer el requisito número 1.
¿De alguna manera me puede indicar un recurso para hacer esto? En realidad no soy un programador de Delphi, así que estoy perdido por algunas de estas cosas. – Dan
No conozco ningún recurso que describa cómo cargar paquetes "manualmente" de la forma en que lo delineé en el párrafo final. La forma normal de usar paquetes, como se describe en el penúltimo párrafo, es algo que esperaría que aparezca en la ayuda de Delphi, aunque no puedo verificarlo porque no tengo instalado Delphi en ningún lado. –