Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-11-2010
vinguel vinguel is offline
Registrado
 
Registrado: ago 2008
Ubicación: Mallorca
Posts: 7
Poder: 0
vinguel Va por buen camino
Unit común en proyecto con BPL's dinámicas.

Buenas a todos.

Estoy haciendo un proyecto con BPL's dinamicas, hay un Main que tiene el menu que se crea leyendo una tabla de Oracle y luego llama a distintas BPL's que se crean de forma dinámica.
La idea es que una vez este bien montado el Main, creará el menú y llamara a los distintos formularios de forma totalmente dinamica.
El problema con el que me encuentro es que si uso una unit, en la que tengo variables globales y funciones comunes, en dos BPL's y las cargo, la segunda no me deja hacer el Load.
He intentado poner esa unit en una bpl dinamica a parte y hacer el load en el onshow del main, pero cuand uso las variables o las funciones en las distintas bpl's, como no ven esa unit, da error de compilacion.
Que rollo jejeje.

Muchas gracias.
Responder Con Cita
  #2  
Antiguo 19-11-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.279
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por vinguel Ver Mensaje
Estoy haciendo un proyecto con BPL's dinamicas,

La idea es que una vez este bien montado el Main, creará el menú y llamara a los distintos formularios de forma totalmente dinamica.

El problema con el que me encuentro es que si uso una unit, en la que tengo variables globales y funciones comunes, en dos BPL's y las cargo, la segunda no me deja hacer el Load.

He intentado poner esa unit en una bpl dinamica a parte y hacer el load en el onshow del main, pero cuand uso las variables o las funciones en las distintas bpl's, como no ven esa unit, da error de compilacion.
Hola Vinguel.

Creo que se soluciona colocando las cosas comunes en una BPL independiente (la llamaremos BPL BASE).

Supongamos que tienes 2 BPL's dinámicas BPL_A y BPL_B.
En mi caso lo que hago es que, como te he comentado, las cosas comunes están definidas en la BPB BASE. Tanto BPL_A como BPL_B están linkadas de forma estática a BPL BASE, de forma que usas las units de BPL BASE es los USES de BPL_A o BPL_B.

Cuando cargas de foma dinámica BPL_A o BPL_B, automáticamente se carga BPL BASE (sin hacer nada especial), pues está "linkada" de forma estática. Si ya has cargado BPL_A (esta a su vez habrá cargado BPL BASE), cuando cargas BPL_B ya no se carga, pues ya está en memoria.

Otra opción de carga es que el programa principal (el EXE) carge BPL BASE (de forma dinámica o estática), de esta forma cuando se cargan las otras BPL's de forma dinámica (BPL_A y BPL_B) encuentran que BPL BASE ya está cargada y no tendrán problemas para acceder a ella.

Ya se que es un poco "lioso" y espero no haerte dejado peor de lo que estabas, pero si estás trabajando con BPL's creo que me entenderás. Si no te aclaras dímelo e intento generar un pequeño ejemplillo...

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 19-11-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Otra opción de carga es que el programa principal (el EXE) carge BPL BASE (de forma dinámica o estática), de esta forma cuando se cargan las otras BPL's de forma dinámica (BPL_A y BPL_B) encuentran que BPL BASE ya está cargada y no tendrán problemas para acceder a ella.

esta es la misma forma que yo utilizo y me parece la más adecuada. De hecho, utilizo un poco de las dos. Tengo el BPL base enlazado de manera estática a cada BPL y con eso puedo utilizar todo lo que contenga en tiempo de diseño. Aquí incluyo funciones comunes, imágenes de botones, perfil de usuario y algunas otras cosas. Y el bpl base lo cargo cuando se crea el .exe.

Cierto que podría ser un pelín complicado al principio, pero una vez que has tenido éxito con tu primer BPL, lo demás ya es pan comido.
__________________

Responder Con Cita
  #4  
Antiguo 19-11-2010
vinguel vinguel is offline
Registrado
 
Registrado: ago 2008
Ubicación: Mallorca
Posts: 7
Poder: 0
vinguel Va por buen camino
Thumbs up

Muchísimas gracias a los dos,

Es cierto que es un poco lioso , pero la forma de hacerlo esta clara. Supongo que es cuestión de acostumbrarse a incluir de forma estática esa BPL BASE en cada BPL dinámica.

Un saludo y hasta otra.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Elegir la carpeta para BPL's ¿? elcolo83 Varios 9 01-06-2010 10:51:02
Documentación sobre BPL'S subzero Varios 18 20-08-2008 01:16:27
Problema con BPL's y Windows 2000 jcarteagaf Varios 10 26-06-2007 17:55:08
Saber que bpl's son necesarias para funcionar con delphi mierda Varios 3 06-09-2006 18:26:43
Algo un poco fuera de lo comun JerS Impresión 2 25-10-2005 18:05:28


La franja horaria es GMT +2. Ahora son las 09:20:54.


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