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 27-12-2016
identsoft identsoft is offline
Miembro
 
Registrado: abr 2006
Posts: 282
Poder: 18
identsoft Va por buen camino
modificar un programa sin afecte a la aplicacion

Hola a todos.
tengo una misma aplicacion instalada en varios clientes. Lo que sucede es que a veces, algún cliente me pide modificaciones solo para él, p.e. un determinado listado con una características especiales que solo sirven a un cliente, pero me obliga a modificar el menu general para poder llamarlo.
Mi pregunta es ¿se puede modificar un programa para un cliente sin que afecte al resto de la aplicación?.
Por ejemplo, una idea (teórica, no se si real): ¿se podría crer una nueva carpeta donde estarian solo las modificaciones de ese cliente y que compilara conjuntamente con la carpeta original?. De tal forma que si un cliente no tiene modificaciones se compila desde la carpeta original y si ese cliente tiene modificaciones se compila utilizando las dos carpetas, la carpeta original y la carpeta que contiene las modificaciones.
Si se puede como habría que hacerlo?
Si no se puede ¿como podría resolver este problema?
Gracias y perdón por si no he sabido expresarme correctamente.
Responder Con Cita
  #2  
Antiguo 27-12-2016
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 identsoft Ver Mensaje
pero me obliga a modificar el menu general para poder llamarlo.
Mi pregunta es ¿se puede modificar un programa para un cliente sin que afecte al resto de la aplicación?.
Mi recomendación es que nunca distribuyas diferentes versiones del programa según los clientes.
Es decir, que te las arregles para que el ejecutable sea el mismo para todos. Algo diferente de esto sólo te va a traer problemas y quebraderos de cabeza.

Cita:
Empezado por identsoft Ver Mensaje
¿se podría crer una nueva carpeta donde estarian solo las modificaciones de ese cliente y que compilara conjuntamente con la carpeta original?. De tal forma que si un cliente no tiene modificaciones se compila desde la carpeta original y si ese cliente tiene modificaciones se compila utilizando las dos carpetas, la carpeta original y la carpeta que contiene las modificaciones.
Si se puede como habría que hacerlo?
...
No hay una solución estándard para resolverlo, se trata de tener imaginación para cada caso.
En el caso de los listados, por ejemplo, puedes tener una carpeta donde cada cliente tenga sus listados de forma que à la hora de instalar o actualizar no modifiques los listados del cliente.
O tener una carpeta para los listados de la aplicación (esos puedes actualizarlos) y otra para los "personalizados" de cada cliente, de forma que estos últimos nunca se "machacan" cuando instalas o actualizas.

Por ejemplo, si necesitas crear elementos de menú para llamar a los listados de un cliente, puedes hacerlo en tiempo de ejecución utilizando un fichero de configuración (es la primera que se me ocurre).
Tener un elemento de menú que diga "listados" o "Listados personalizados" y luego un pequeño fichero de configuración que sea algo así:

Código Delphi [-]
[LISTADOS]
Listado1=Resumen semanal
path1=c:\Program Files\MyApp\ListadosCliente\ResumenSemanal.frf
Listado2=Facturación anual
path2=c:\Program Files\MyApp\ListadosCliente\FacturacionAnual.frf
...

En ejecución, segun ese fichero puedes crear los elementos de menú para lanzar los listados.

Es simplemente un ejemplo, se trata de pensar algo que se ajuste a lo que necesitas, pero hay infinitas opciones.
Si detallas más concretamente tu problemas te podemos dar alguna idea y algo de código.
__________________
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 27-12-2016
WHILENOTEOF WHILENOTEOF is offline
Miembro
 
Registrado: mar 2008
Posts: 229
Poder: 17
WHILENOTEOF Va camino a la fama
Comparto la opinión de cuanto menos tipos ejecutables mejor, aunque puedes generar alguna versión diferente con directivas de compilación. Personalmente prefiero poner todas la opciones de menús, informes y formularios dentro de la base de datos, y según el perfil de usuario se cargan en tiempo de ejecución los que le corresponden.
Responder Con Cita
  #4  
Antiguo 27-12-2016
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Si necesitas que tu aplicación se comporte de forma diferente según el cliente, usa algún sistema de extensiones (scripts). Pascal Script de Rem Objects es posiblemente la mejor opción ya que es el mismo lenguaje (Object Pascal), es fácil de integrar usando RTTI y puede usarse vía componentes visuales.

Si se trata únicamente de listados (reportes) la mayoría de los sistemas admiten que el diseño de estos pueda guardarse en un archivo de datos para ser leído en el momento de imprimir.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #5  
Antiguo 27-12-2016
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
También puedes generar BPL's o DLL's que modifiquen el comportamiento estandard (más compleja).
Como vez hay muchas opciones, unas más complejas que otras. Hay que ver cual se ajusta a tus necesidades.
__________________
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
  #6  
Antiguo 27-12-2016
identsoft identsoft is offline
Miembro
 
Registrado: abr 2006
Posts: 282
Poder: 18
identsoft Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Mi recomendación es que nunca distribuyas diferentes versiones del programa según los clientes.
Es decir, que te las arregles para que el ejecutable sea el mismo para todos. Algo diferente de esto sólo te va a traer problemas y quebraderos de cabeza.
Tienes razón, lo ideal es que el ejecutable sea el mismo para todos, pero a veces eso no es posible y tenemos que ir añadiendo modificaciones propias para cada cliente.

Cita:
Empezado por Neftali Ver Mensaje
No hay una solución estándard para resolverlo, se trata de tener imaginación para cada caso.
En el caso de los listados, por ejemplo, puedes tener una carpeta donde cada cliente tenga sus listados de forma que à la hora de instalar o actualizar no modifiques los listados del cliente.
O tener una carpeta para los listados de la aplicación (esos puedes actualizarlos) y otra para los "personalizados" de cada cliente, de forma que estos últimos nunca se "machacan" cuando instalas o actualizas.

Por ejemplo, si necesitas crear elementos de menú para llamar a los listados de un cliente, puedes hacerlo en tiempo de ejecución utilizando un fichero de configuración (es la primera que se me ocurre).
Tener un elemento de menú que diga "listados" o "Listados personalizados" y luego un pequeño fichero de configuración que sea algo así:

Código Delphi [-]
[LISTADOS]
Listado1=Resumen semanal
path1=c:\Program Files\MyApp\ListadosCliente\ResumenSemanal.frf
Listado2=Facturación anual
path2=c:\Program Files\MyApp\ListadosCliente\FacturacionAnual.frf
...

En ejecución, segun ese fichero puedes crear los elementos de menú para lanzar los listados.

Es simplemente un ejemplo, se trata de pensar algo que se ajuste a lo que necesitas, pero hay infinitas opciones.
Si detallas más concretamente tu problemas te podemos dar alguna idea y algo de código.
He puesto el ejemplo de los listados porque es el más común. pero las modificaciones pueden ser múltiples y variadas. Por ejemplo: la aplicación es multiempresa y cada empresa puede tener Clientes propios y Agentes que a su vez pueden tener otros Clientes. La facturación se puede hacer tanto a los clientes propios como a nombre de los agentes como a nombre del cliente de los agentes. Lo mismo a la hora de contabilizar el apunte contable. Otro ejemplo: cada artículo tiene un precio determinado, pero dependiendo del cliente puede tener otro precio y lo mismo para el Agente o para el cliente del agente. etc,etc.. y así más.
Yo intento adaptar esas modificaciones al aplicativo general, pero a veces es imposible.
Responder Con Cita
  #7  
Antiguo 27-12-2016
identsoft identsoft is offline
Miembro
 
Registrado: abr 2006
Posts: 282
Poder: 18
identsoft Va por buen camino
Cita:
Empezado por Ñuño Martínez Ver Mensaje
Si necesitas que tu aplicación se comporte de forma diferente según el cliente, usa algún sistema de extensiones (scripts). Pascal Script de Rem Objects es posiblemente la mejor opción ya que es el mismo lenguaje (Object Pascal), es fácil de integrar usando RTTI y puede usarse vía componentes visuales.

Si se trata únicamente de listados (reportes) la mayoría de los sistemas admiten que el diseño de estos pueda guardarse en un archivo de datos para ser leído en el momento de imprimir.
Gracias. Miraré a ver si es lo que necesito
Responder Con Cita
  #8  
Antiguo 27-12-2016
identsoft identsoft is offline
Miembro
 
Registrado: abr 2006
Posts: 282
Poder: 18
identsoft Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
También puedes generar BPL's o DLL's que modifiquen el comportamiento estandard (más compleja).
Como vez hay muchas opciones, unas más complejas que otras. Hay que ver cual se ajusta a tus necesidades.
¿Como funcionan BPL's? Un ejemplo, un sitio donde buscar información?.
Lo mismo con DLL's. Nunca he trabajado con ellas.
Gracias
Responder Con Cita
  #9  
Antiguo 27-12-2016
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 identsoft Ver Mensaje
¿Como funcionan BPL's? Un ejemplo, un sitio donde buscar información?.
Lo mismo con DLL's. Nunca he trabajado con ellas.
Gracias
http://neftali.clubdelphi.com/dlls-b...es-en-runtime/
http://neftali.clubdelphi.com/vcl-y-firemonkey/
http://neftali.clubdelphi.com/sistem...elphi-parte-1/
http://neftali.clubdelphi.com/sistem...elphi-parte-2/

Aquí en el foro, si buscas también encontrarás hilos al respecto.
Y en el FTP hay también algunos ejemplos sencillos.
__________________
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
  #10  
Antiguo 27-12-2016
identsoft identsoft is offline
Miembro
 
Registrado: abr 2006
Posts: 282
Poder: 18
identsoft Va por buen camino
Gracias Neftali.
Voy a revisarlos.
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
¿Que nombre ponerle a tu aplicación o programa ? thelibmx La Taberna 18 19-03-2014 16:57:34
Aplicacion distribuida Modificar TSQLDataSet en servidor delphijm Conexión con bases de datos 7 18-02-2011 20:00:09
Modificar variables de una aplicación desde una DLL Albano OOP 8 20-04-2007 22:11:32
No puedo borrar del stringGrid una fila que afecte en un registro. Arturo Varios 0 19-10-2006 19:07:15
Tweak modificar un programa desde otro. turminator Varios 13 23-06-2006 15:02:47


La franja horaria es GMT +2. Ahora son las 04:56:30.


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