Releyendo el mesaje original y para concretar ideas, lo que yo le recomendaría a
adlfv es olvidarse de los paquetes dinámicos.
En la unidad UBD colocaría una función así:
Código Delphi
[-]
unit UBD;
interface
function ObtenerBD: TBD;
implementation
var
_BD: TBD;
function ObtenerBD: TBD;
begin
if not Assigned(_BD) then _BD := TBD.Create;
Result := _BD;
end;
initialization
finalization
_BD.Free;
end.
Es decir, en lugar de crear el objeto en la inicialización, se crea hasta la primera vez que se use.
Cualquier otro paquete que requiera de éste lo agregará (valga la redundancia) en su lista de paquetes requeridos.
La aplicación principal incluye UBD (cláusula
uses) con lo cual puede usar libremente ObtenerBD (y por tanto _BD) sin necesidad de cargar explícitamente el paquete ni importar la función.
Y claro, usar la opción "Build with RunTime Packages" y agregar el paquete BD en la lista.
Con esto, la aplicación queda modularizada: se pueden hacer cambios a BD, recompilarlo y, sin necesidad de recompilar la aplicación, la nueva funcionalidad estará lista.
// Saludos