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 10-06-2010
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Aplicacion con Plugin

Hola gente,

estoi comenzando un proyecto que involucra el desarrollo de una aplicación que está compuesta por distintos modulo: Adquisiciones, Ventas, Inventario, Facturación, etc.

Investigando por la red me percate que existe para Delphi las librerias BPL. Mi idea es tener una aplicación principal, y dependiendo del perfil del usuario las distintas librerias a las cuales pudiera ingresar.

De esta forma el programa completa estaría compuesto por un programa base,, mas todos los distintos modulo que componen la aplicación... una de las ventajes que le veo a esto es poder actualizar de forma separada cada modulo (archivos de menor tamaño), etc.

El punto es que no se por donde comenzar aprender todo esto... encontre algunos documentos realizados por Neftali, pero me gustaría comnezar con algo mas sencillo... algo bastante mas sencillo, y asñí poder familiarizarme con todo esto.

Una de las principales problemas que tuve con estos documentos, fue que no pude generar a partir de cero, los archivos bpl que necesito.

Ojala me ouedan ayudar, explicando desde el principio como escribir todo el codigo que necesito para esto.

Además, si es que realmente vale la pena desarrollar esta aplicaión de la forma propuesta.

Gracias.
Responder Con Cita
  #2  
Antiguo 11-06-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
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 mjjj Ver Mensaje
El punto es que no se por donde comenzar aprender todo esto... encontre algunos documentos realizados por Neftali, pero me gustaría comnezar con algo mas sencillo... algo bastante mas sencillo, y asñí poder familiarizarme con todo esto.

Una de las principales problemas que tuve con estos documentos, fue que no pude generar a partir de cero, los archivos bpl que necesito.

Ojala me ouedan ayudar, explicando desde el principio como escribir todo el codigo que necesito para esto.

Además, si es que realmente vale la pena desarrollar esta aplicaión de la forma propuesta.
Bueno, si ya has revisado lo que hay en mi web, no te enviaré otra vez a que la mires...
En la web y embarcadero puedes encontrar documentación al respecto y algunos artículos interesantes.

En cuanto al diseño de la aplicación me parece el correcto. Es más, yo comencé con el diseño de packages en una aplicación grande por una motivación similar. Diferentes módulos de la aplicación y la característica de que los diferentes usuarios cargan diferentes módulos.
La aplicación es un ERP (bastante grande) y aproximadamente cuenta con 25/30 módulos. Por lo tanto no era "aceptable" que todos los usuarios cargaran TODOS los módulos.
Hay usuarios que usan 4, los hay que usan 10 y los hay que los usan todos (admins).

Nuestra estructura de packages es algo así; Cuenta con varias partes "conceptualmente":

* EXE (1 fichero): Básicamente en el formulario principal y algo de código inicial, para iniciar la aplicación, cargar el resto de packages,...
* PACKAGES DE LIBRERÍAS (6 BPL): Contienen los packages que son el CORE de la aplicación; Conexiones a Base de Datos, Controles visuales, librerías genéricas, el core de la interficie y el core para la capa de negocio.
* PACKAGES BÁSICOS (2 BPL): Contiene las clases básicas para la capa de negocio. Son clases genéricas y que debe acceder todo el mundo, de ahí que se carguen de forma estática.
* N PACKAGES NEGOCIO (N BPL): Por último están los packages de negocio. Que son el resto de clases/modulos con los que cuenta la aplicación.
* N PACKAGES VCL.

El EXE carga de forma estática (es decir que están linkados estáticamente al EXE) los packages de la VCL, los 6 packages de librerías y los 2 packages básicos. Si estos packages no se encuentran la aplicación genera error.

Al cargar este core, y segun el usuario que se ha accedido, el sistema sabe qué packages debe cargar (de los N de negocio) y estos son los que se cargan de forma dinámica (utilizando LoadPackage), de forma diferente para cada usuario. de esta forma cada usuario tiene "la parte de la aplicación" que va a utilizar.

Más adelante podemos discutir la carga/descarga dinámica (bajo petición).

Para empezar te recomiendo que hagas un EXE y una BPL con clases y formularios. Línkalo de forma estática y de forma dinámica y en ambos casos debes acceder a ellos.
Cuando tienes carga dinámica tendrás que acceder utilizando RTTI, así que tendrás que empezar a familiarizarte con estos temas.

Más adelante podemos hablar de las actualizaciones de packages "por separado" y de que no es tan bonita como a primera vista parece...

Te recomiendo que pruebes y que experimentes. Si tienes dudas plantéalas. A priori la complejidad aumenta al utilizar packages y aparecen algunos problemas que de otra forma no tendrías, pero considero que para aplicaciones grandes son casi imprescidibles.

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 11-06-2010
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Cree un proyecto que contiene 2 packages, cada uno con algunos componentes como TLabel, Tbuttom, Tedit, etc... y un ejecutable con un TButton.

El problema es que al compilar y construir, en ninguna parte me genera los archivos BPL, sino que archivos .dpk.

Como hago para crear los archivos BPL, y asi poder seguir con mis pruebas.

Saludos.
Responder Con Cita
  #4  
Antiguo 11-06-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
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
Una DPK es un archivo de package en diseño; Ahí debes añadir tus formularios y lo que necesites dentro del packege. Cuando compilas ese DPK se genera una BPL. Revisa las opciones del DPK para saber cual es el directorio de salida y donde lo está guardando.

Debes tener 1 ProjectGroup (grupo de proyectos) que dentro tenga 1 DPR (que generará el EXE) y 2 DPK que generarán 2 BPL.

__________________
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
  #5  
Antiguo 11-06-2010
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Gracias, ya pude crear los archivos BPL.

Me comentaste que en tu aplicación tienes algunos packeges que se carga de forma estatica y otras dinamica... esto quiere decir (estatica), que los carga automaticamente al ejecutarse el EXE... y dinamica, a peticion del usuario??

Me podrias guiar con algo de codigo como podría cargas estos packages tanto de forma estatica, como dinamica.

Gracias
Responder Con Cita
  #6  
Antiguo 12-06-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
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
En principio es sencillo; Si tú en algún USES de una unit, haces referencia a elementos de otro package, el compilador linka ese pacakes de forma estática y aunque tu programa se ejecute con packages, si falta alguno de esos, tu programa fallará al iniciar.
Para utilizar un form de otro packages, por ejemplo, basta con añadirlo al uses y hacer esto:

Código Delphi [-]
formUsuario := TFormUsuario.Create(...)
...

La otra opción es no hacer referencia en los USES a nada que esté en los packages, de esa forma el compilador/linker no necesita esas referencias y no crea ese vínculo estático. Esos packages se cargan desde el programa de forma dinámica (LoadPackage o loadLibrary -en el caso de DLL's-) y para utilizar los formularios o clases que contienen se usa RTTI.

En este caso si quisieras mostrar el form de usuario, deberías hacerlo como se muestra aquí, aquí, aquí, aquí o aquí. si buscas en los foros, encontrarás más referencias (busca por GetClass, RTTI,...)
__________________
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
  #7  
Antiguo 15-06-2010
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Despues de mucho batallar logre cargar de forma dinamica mis packages.

Pero tengo algunos problemas.

La forma de cargar estos paquetes funciona asi:

Código Delphi [-]
var
  Frame :TForm;
  PackageModule: HModule;
  AClass: TPersistentClass;
begin
Frame := FindComponent ('Form5') as TForm;
if Assigned (Frame) then frame.BringToFront
else
BEGIN

PackageModule := LoadPackage('C:\PROGRAMAS\DOMMO_3\Mas.bpl');
  if PackageModule <> 0 then
  begin
    AClass := GetClass('TForm5');
    if AClass <> nil then
      with TComponentClass(AClass).Create(Application)
        as TForm do
      begin
        parent := panel1;
        Show;
   //     Free;
      end;
 //   UnloadPackage(PackageModule);
  end;
end;

Las lineas Free y UnloadPackage tuve que comentarlas, ya que cambié el showmodal, por un show. La idea de esto es que funcione como si fuera un archivo de Excel (por ejemplo), en donde pudiese cerrar, maximizar o ajustar el tamaño del form dentro del parent, en este caso un TPanel.

Esto funciona bien, pero el problema es que si ejecuto mas de una vez la rutina me sigue cargando nuevos Forms... y no es lo que quiero. Por esto agregue unas lineas al comienzo...

Código Delphi [-]
Frame := FindComponent ('Form5') as TForm;
if Assigned (Frame) then frame.BringToFront
else

esto con el afan de que si encuentra algun componente de tipo TForm (por ejemplo), en vez de crear nuevamente lo traiga al frente.

El punto es que no funcionó, me percate, que cada vez que creo el Form le agrega al nombre original "_1", "_2", "_3", y asi sucecivamente... como puedo solucioanr esto.

Por otro lado, tengo en el progrma principal 2 Tform, uno que es el con el comienza la aplicación, y el segundo un TdataModule.

Ocurre que tengo 2 paquetes, y en cada uno de ellos lo tengo linkeado con la sentencia "uses", al unit del datamodulo.

El punto es que como NO cierro estos paquetes, si tengo uno abierto y quisiera abrir el otro, me arroja un error que no se puede cargar el paquete, porque contiene un unit que está en otro paquete.

Porque ocurre esto... como puedo solucionarlo.

Espero me puedan ayudar.

Saludos
Responder Con Cita
  #8  
Antiguo 15-06-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
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
Hola mjjj.
Veo que la cosas van avanzando...
Te felicito, es un tema compejo, pero muy interesante, no te desanimes.

Sería bueno que subieras un proyecto (Grupo de proyectos BPG) con lo que vas haciendo, para poder ir probando (no sólo yo, sino el resto de gente). Y sobre ese proyecto se pueden ir aciendo las modificaciones y los cambios.


Cita:
Empezado por mjjj Ver Mensaje
Pero tengo algunos problemas.
Revisemos...

Cita:
Empezado por mjjj Ver Mensaje
La forma de cargar estos paquetes funciona asi:
...

Las lineas Free y UnloadPackage tuve que comentarlas, ya que cambié el showmodal, por un show. La idea de esto es que funcione como si fuera un archivo de Excel (por ejemplo), en donde pudiese cerrar, maximizar o ajustar el tamaño del form dentro del parent, en este caso un TPanel.
Es lógico. Si haces un ShowModal, la ejecución del programa se detiene en ese punto hasta que cierras el formulario. Si locambias por un Show, piensa que después del Show el programa sigue, así que visualizas el formulario, y justo después, lo liberas (Free) y descargas el package. Funciona, pero el resultado será que no te dará tiempo ni a verlo.

Prueba este código en el With y verás:

Código Delphi [-]
      with TComponentClass(AClass).Create(Application)       as TForm do      begin
        parent := panel1;
        Show;
        MessageDlg('Visualizado...   Continuo destruyendo', mtInformation, [mbOK], 0);
        Free;
      end;

Ahora la ejecución se detiene cuando está en pantalla en diálogo (es modal), cuando cierres el diálogo sigue y el form se destruye.

Ok, ahora supongamos que comentas las líneas del Free y del UnloadPackage, con lo que los forms que creas no se destruyen.

Cita:
Empezado por mjjj Ver Mensaje
Esto funciona bien, pero el problema es que si ejecuto mas de una vez la rutina me sigue cargando nuevos Forms... y no es lo que quiero. Por esto agregue unas lineas al comienzo...

esto con el afan de que si encuentra algun componente de tipo TForm (por ejemplo), en vez de crear nuevamente lo traiga al frente.

El punto es que no funcionó, me percate, que cada vez que creo el Form le agrega al nombre original "_1", "_2", "_3", y asi sucecivamente... como puedo solucioanr esto.
Seguramente basta con que le asignes ese nombre. Estás buscando por nombre (FindComponent), pero no le asignas nombre al form, por eso al crearlo se le asigna uno automático.
También es imprescindible que el Owner del formulario creado sea el form actual, de otra forma el FindComponent no te lo encontrará.

Prueba con este código:

Código Delphi [-]
  Frame := FindComponent('Form5') as TForm;
  if Assigned (Frame) then begin
    frame.BringToFront;
    Frame.SetFocus;
  end
  else BEGIN
    PackageModule := LoadPackage('.\Mas.bpl');
    if PackageModule <> 0 then begin
    AClass := GetClass('TForm5');
    if AClass <> nil then begin
      /////  Crearlo con el OWNER A SELF
      with TComponentClass(AClass).Create(Self)       as TForm do      begin
        parent := panel1;
        Name := 'Form5';    //////NOMBRE
        Show;
      end;
    end;


Cita:
Empezado por mjjj Ver Mensaje
Por otro lado, tengo en el progrma principal 2 Tform, uno que es el con el comienza la aplicación, y el segundo un TdataModule.

Ocurre que tengo 2 paquetes, y en cada uno de ellos lo tengo linkeado con la sentencia "uses", al unit del datamodulo.

El punto es que como NO cierro estos paquetes, si tengo uno abierto y quisiera abrir el otro, me arroja un error que no se puede cargar el paquete, porque contiene un unit que está en otro paquete.
Creo que esto es un problema en el diseño de los packages. Tal vez deberías subir el proyecto (o uno más pequeño de ejemplo con el mismo problema) para poder examinarlo detalladamente.

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
  #9  
Antiguo 15-06-2010
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Adjunto el proyecto simplificado para que puedan echarle una mirada.

Los problemas son los siguientes.

1.- Resolví el asunto que cargaba muchisimas veces un package, pero el problema es que al cerrar el formulario cargado por el paquete, y lo vuelvo a cargar, me arroja que no puedo enfocarme en una ventana invisible.

2.- Si cargo un paquete, y a continuación el segundo, me arroja que no se puede cargar el paquete porque contiene el unit conect, al cual el paquete cargado también hace referencia.

Espero me puedan ayudar.

Gracias.
Responder Con Cita
  #10  
Antiguo 15-06-2010
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Ahora si va el archivo.

Saludos.

Última edición por mjjj fecha: 19-07-2010 a las 20:17:40.
Responder Con Cita
  #11  
Antiguo 15-06-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
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
Hola mjjj.

Te paso el ejemplo con algunas modificaciones. Tengo que marchar, así que no me puedo parar casi nada, luego si me da tiempo lo comento de forma más extensa.

* He cambiado para que las consultas apunten al BDE (y poder probarlo)
* En los formularios de los packages te falta el:

Código Delphi [-]
Action := caFree;  // en el OnClose

Para que el formulario se destruya. Si no lo que hace delphi por defcto es enconderlo (Hide), de ahí el error que te daba al abrilo la segunda vez.

Luego más. Chao.
Archivos Adjuntos
Tipo de Archivo: zip Test Packages dinamicosv2.zip (88,0 KB, 18 visitas)
__________________
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
  #12  
Antiguo 15-06-2010
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Que formato tiene el archivo adjunto... no se con que abrirlo.

Me ayudas porfavor.

Saludos.
Responder Con Cita
  #13  
Antiguo 16-06-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
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 mjjj Ver Mensaje
Que formato tiene el archivo adjunto... no se con que abrirlo.
Perdón. Es un problema que tengo dede hace tiempo cuando subo ficheros ZIP al foro.
Te vuelvo a subir otro ZIP y un RAR al que tienes que quitarle la extensión ZIP a ver si alguno puedes descompimirlo.
Archivos Adjuntos
Tipo de Archivo: zip Test Packages dinamicosv2.zip (89,2 KB, 16 visitas)
Tipo de Archivo: zip Test Packages dinamicosv2.rar.zip (86,9 KB, 11 visitas)
__________________
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
  #14  
Antiguo 15-07-2010
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
He vuelto a retomar esto, y me han surgio un problema.

El proyecto tiene un ejecutable con varios paquetes que se cargan de forma dinamica. Para que esto funcione tuve que seleccionar la opción de build with packages.

Ahora bien, una vez compilado y ejecutado en el PC donde se desarrollo funciona perfecto, pero al llevarlo a otro PC, me arroja un error que no encuentra el archivo rtl100.bpl.

Por otro lado, si retiro la opción de build with packages, se ejecuta el programa sin problema, pero al tratar de cargar los paquetes creados por mi, no ocurre nada... ni error ni paquete abierto.

Que podrá ser esto?

Espero me puedan ayudar.
Responder Con Cita
  #15  
Antiguo 15-07-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
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
Es correcto.

Si una aplicación utiliza package dinámicos como esta, y para ello usa RTTI, debe estar compoilada TODA con packages. Es decir, para utilizar los packages tal y como están aquí tu aplicación debe estar compilada con el flag "Build with runtime packages".
Eso significa que junto con tu aplicación y sus packages, deberás distribuir los packages de la VCL necesarios para que esta funcione.

Para saber qué packages necesitas puedes usar "dependency Walker", GExperts (PE explorer) o el "Executable Analizer (Cn)" que el otro día subí al FTP del Club.

Con cualquiera de estos programa si les das el ejecutable te dicen la lista de packages que debes distribuir con él.



La otra opción es generar un sólo ejecutable (sin "Build with runtime packages") y cargar los packages de forma dinámica, pero en ese caso no podrás utilizar RTTI. Es decir, podrás cargar los packages como si fueran DLL's, y perderás MUCHO potencial (todo lo que te ofrece RTTI, o lo que es lo mismo, pierde toda la gracia , y en ese caso casi es más recomendable usar DLL's).
__________________
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
  #16  
Antiguo 15-07-2010
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
No hay caso, no he podido resolverlo.

Si corro el programa que sugirieron, me arroja que utiliza en package rtl100.bpl (entre otros).

Ahora bien si en la opción de los packages de la aplicación agrego el rtl100.bpl, me arroja que este no existe. Si reviso el listo de packeges existe uno que se llama rtl.bpl.

Revise el directorio de windows\system32, y encontre el packages. si trato de instalarlo no hay caso.. no me deja, dice que ya esta instalado.

Como puedo solucionar esto?

Por ultimo en un PC que estaba limpio, es decir, nunca se había instalado Delphi 2006, lo instale. Creé un proyecto nuevo, el cual consistia en un TForm, el cual contenia un TButton. Me fui a la opción de los packages y le seleccione la opción de build with packages, lo compile y lo mismo...

No se que hacer... ayuda porfa

Gracias
Responder Con Cita
  #17  
Antiguo 16-07-2010
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Finalmente lo que hice fue buscar en el equiopo de desarrollo todas las librerias que necesitaba la aplicación, y las copie a la carpeta donde se copió la aplicación.

El punto es que tuve que copiar todas las librerias, no solo con la que tenia problema....

Como puedo agregar las librerias en el mismo ejecutable?
Me imagino que al seleccionar el build with packages, existe unaopción de agregar packages... asumo que aquí es donde se agregan.. esto es asi??

Asumiendo eso, lo realice y no me funcionó... Porque podría ser esto?

Otra idea, como puedo selccionar de donde leer las librerias del ejecutable... en las mismas opciones del ejecutable hay un item que dice directorios... aquí escribo el directorio de la librerias, para no tenerlas en la misma carpeta donde está el ejecutable... y tampoco me fucniona.

Son varias preguntas, espero me puedan ayudar.

Gracias
Responder Con Cita
  #18  
Antiguo 16-07-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
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 mjjj Ver Mensaje
Finalmente lo que hice fue buscar en el equiopo de desarrollo todas las librerias que necesitaba la aplicación, y las copie a la carpeta donde se copió la aplicación.

El punto es que tuve que copiar todas las librerias, no solo con la que tenia problema....
Bueno, eso es lo que hay que hacer cuando compilas un programa utilizando "Build with runtime packages"; Junto a tu EXE (y en este caso los BPL's dinámicos), debes copiar las BPL's de delphi que tu programa necesite; Pueden ser 4, 10 o 20, dependiendo de las características y componentes que hayas utilizado.
Eso es correcto, no te has equivocado.
Lo lógico es que tu instalador, cuando lo hagas, las copie.

Cita:
Empezado por mjjj Ver Mensaje
Como puedo agregar las librerias en el mismo ejecutable?
Me imagino que al seleccionar el build with packages, existe unaopción de agregar packages... asumo que aquí es donde se agregan.. esto es asi??
Asumiendo eso, lo realice y no me funcionó... Porque podría ser esto?
Pues no hay esa opción. Ya lo has hecho bien.
Si quieres utilizar carga dinámica de Packages y RTTI, debes compilar tu aplicación con "Build with runtime packages" y por tanto desdes distribuir:
* EXE
* BPL's dinámicos que has creado tú
* BPL's de librerías


Cita:
Empezado por mjjj Ver Mensaje
Otra idea, como puedo selccionar de donde leer las librerias del ejecutable... en las mismas opciones del ejecutable hay un item que dice directorios... aquí escribo el directorio de la librerias, para no tenerlas en la misma carpeta donde está el ejecutable... y tampoco me fucniona.
Si haces la carga dinámica con LoadPackage, al cargar el packages le indicas donde se encuentra.
Si realizas carga estática, las librerías deben estar en el directorio del ejecutable o en un directorio del path del sistema (C:\Windows), por ejemplo. Si quieres que estén en otro, debes especificarlo en el path.
__________________
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
  #19  
Antiguo 16-07-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
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
Post DLL's, DPL's, carga dinámica, carga estática y Packages en Runtime

DLL's, DPL's, carga dinámica, carga estática y Packages en Runtime

Lo he explicado aquí, espero que te aclare un poco las cosas.

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.

Última edición por Neftali [Germán.Estévez] fecha: 16-07-2010 a las 13:08:27.
Responder Con Cita
  #20  
Antiguo 19-07-2010
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Gracias Neftali por tu respuesta, me fue de mucha ayuda.
Tengo otras dudas.

Mi aplicación consta del ejecutable (3 forms y 1 DataModule), 3 paquetes de carga dinámica (desarrollados por mi), y librerias de terceros.

Me interesa que las librerias de terceros se cergen de forma estatica, pero que ademas esten en una carpeta dentro de la carpeta donde esta instalado la aplicación. Esto se define en las opciones de proyecto... ¿en search path?

El Datamodule contiene los componentes necesarios para conectarme con la BD. En los paquetes se carga dinamica, le agrego el datamodule como "uses datamodule". el problema ocurre al tratatr de cargar un paquete cuando tengo otro abierto, me arroja que en otro paquete ya se esta usuando el datamodule.

Como puedo solucionar esto?

Gracias
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
FirebirdConfig ahora en Plugin para IBExpert egostar Noticias 15 26-09-2008 22:45:17
Plugin para outlook fjardelphiyahoo OOP 1 18-09-2007 13:14:01
¿Como instalo plugin en IBexpert? NPIdea Firebird e Interbase 1 22-06-2007 13:27:10
Instalar Plugin en eclipse Paoti JAVA 3 08-01-2007 20:47:23
Que es un plugin? chavetaz Varios 2 19-10-2004 14:41:29


La franja horaria es GMT +2. Ahora son las 19:49:14.


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