Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   implicitly imported into package (https://www.clubdelphi.com/foros/showthread.php?t=74690)

look 04-07-2011 23:09:20

implicitly imported into package
 
Hola, estoy utilizando paquetes para dividir mis modulos en mi sistema y al compilar me salta este aviso :
[Error] Unit 'unidad' implicitly imported into package 'paquete' en donde unidad es el nombre de la unit que son varias como en paquete el nombre de mi bpl.
el asunto es que estube investigando y para solucionar esto tenia que agregar estas unidades la parte contains de mi bpl
esto soluciono ese mensaje, pero ahora me muestra el siguiente mensaje al llamar un formulario desde la aplicacion principal.

LoPiTaL 05-07-2011 17:42:40

El problema que te está ocurriendo es que Delphi no puede cargar dos paquetes que contengan la misma unit, por eso te da error.

Al añadir dichas units a la parte contains de tu paquete, las tendrás contenidas (de ahí que se llame "contains" :D ) en dos paquetes, el que te has creado (ModFac, supongo) y el que te habías instalado de terceros (bdertl70, supongo también).

Para solucionarlo, lo que debes hacer es quitar las units problemáticas de la parte de "contains" de tu paquete, y en lugar de añadir las units a la parte "contains", añadir el paquete en el que se encuentran, "bdertl70", a la parte "Requires" de tu paquete (botón derecho sobre el nombre de tu paquete en el Project Manager, selecciona "Add References" y lo añades en "Package Name").

Un sintoma de que algo va mal, es cuando el compilador te da el Warning (NO el error) de "Implicitly imported unit".

Cita:

[Error] Unit 'unidad' implicitly imported into package 'paquete' en donde unidad es el nombre de la unit que son varias como en paquete el nombre de mi bpl.
Esto no es un [Error]. Te equivocaste copiándolo, es un Warning. Significa que el compilador automáticamente te está metiendo la unit en la parte "contains" y por eso te avisa, porque es probable que te falte añadir algún paquete al "requires". Evidentemente, cuando en lugar de que lo haga el compilador implícitamente, lo haces tú explícitamente, entonces ya no te avisa, que es lo que habías hecho.

Para terminar mi monólogo, decir sólo que si el paquete del que dependes es de terceros no hay problema, se añade al requires y ya está. Pero si la unit de la que dependen varios de tus paquetes es tuya, probablemente la tengas contenida en más de un paquete y te dará el mismo error. Para solucionarlo, te tocará crear un paquete nuevo sólo con esta unit, y quitarla de todos los paquetes de la parte "contains" salvo del paquete nuevo, así estará contenida exclusivamente en este nuevo paquete, y los demás tendrán solo una referencia a él, de la misma forma que con "bdertl70".

Espero haberme explicado bien.

Un saludo,
LoPiTaL

look 05-07-2011 17:45:39

gracias , muy bien explicado, es exactamente la solucion que encontre.
Saludos.


La franja horaria es GMT +2. Ahora son las 16:58:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi