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 28-01-2015
atani123 atani123 is offline
Miembro
 
Registrado: jul 2006
Posts: 63
Poder: 18
atani123 Va por buen camino
Llamadas a DLL

A ver, os cuento el problema a ver cual creeis que es la mejor solucion.

Tengo una aplicacion que con unos parametros que recibe de 'da igual donde' realiza unos calculos. Pues bien, esos calculos deben de ser diferentes para cada cliente, y mi idea es crear varias dll y que la aplicacion llame a una u otra depende del cliente. Pongo un ejemplo

Tengo una serie de numeros, 4, 5, 6 y 7.

El cliente A quiere que le muestre por pantalla la suma de los numero 4+5+6+7=22
El cliente B quiere que le muestre el numero mas alto (4,5,6,7)=7
El cliente C quiere que le muestre la media (4+5+6+7)/4=5.5
El cliente D quiere que le envie por RS232 el numero mas alto 7

Visto esto seria un absurdo hacer 4 programas diferentes, por lo que he creado un unico programa donde a groso modo hago esto

Inicio de la aplicacion
Si cliente = A entonces LoadLibrary( 'ClienteA.dll')
Si cliente = B entonces LoadLibrary( 'ClienteB.dll')
Si cliente = C entonces LoadLibrary( 'ClienteC.dll')
Si cliente = D entonces LoadLibrary( 'ClienteD.dll')

todas las dll tienen un procedimiento llamado 'Procesardatos';
........
Instruccion 001;
Instruccion 002;
Instruccion 003;
Procesardatos( 4,5,6,7); //Aqui ejecuta el procesardatos de la dll que tenga cargada
Instruccion 004;
Instruccion 005;
fin del programa
........

¿Que tal veis esta solucion?, ¿Alguna forma mejor de hacerlo?
Responder Con Cita
  #2  
Antiguo 28-01-2015
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Poder: 13
engranaje Va por buen camino
Igual para tu caso en concreto la idea que planteas es la mejor, despues de todo lo conoces bien.

En mi opinión y mas genéricamente, en lugar de distintas dll tendría distintos procedimientos y decidiría cual lanzar dependiendo de una configuración que almacenariamos en el registro de windows, en un ini, o en un fichero con el formato que tengamos. Si es una aplicación de consola también puedes decidir añadir un primer parametro y que dependiendo del valor de este se decida que hacer con los siguientes.

Esto permitiria a un cliente realizar cualquiera de los procesos posibles, incluso los 3 solo cambiando un parametro de configuración. Yo las dll las dejo solo para cuando lo que tengo que ejecutar debo lanzarlo desde varias aplicaciones distintas y tampoco siempre.

Última edición por engranaje fecha: 28-01-2015 a las 13:59:32.
Responder Con Cita
  #3  
Antiguo 28-01-2015
atani123 atani123 is offline
Miembro
 
Registrado: jul 2006
Posts: 63
Poder: 18
atani123 Va por buen camino
Lo comento porque el tema de las dll o no lo controlo bien o windows no las gestiona bien, ya que casi siempre que las he utilizado el pc acaba volviendose lento, cosa que se soluciona reiniciando.

Tengo que decir que el PC puede tirarse semanas incluso meses trabajando en la aplicacion las 24 horas de dia.
Responder Con Cita
  #4  
Antiguo 28-01-2015
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.271
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
A mi no me parece un mal enfoque.
Puedes decidir entre BPL's o 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
  #5  
Antiguo 30-01-2015
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Poder: 13
engranaje Va por buen camino
Sobre la dll que realentizan el pc.. yo utilzo dll que también estan trabajando todo el día y no noto que realentizen el equipo. Es verdad que con mis primeras dll si me pasaba pero era porque no liberaba bien la memoria y al final con cada nueva llamada que hacía a alguna función de la dll mas memoria que utilizaba.

Puedes revisar eso, si las dll las enlazas en estatico y no tienes cuidado con como creas y liberas los objetos la dll puede empezar a ocupar cada vez mas memoria. El problema mas habitual que me he encontrado con las dll es que según lo que haga en ellas a ciertos antivirus no les gusten.

Última edición por engranaje fecha: 30-01-2015 a las 10:01:28.
Responder Con Cita
  #6  
Antiguo 30-01-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Pero eso seria lo mismo que hacer algo como esto

Código Delphi [-]

interface
  procedure ClienteA;
  procedure ClienteB;
  procedure ClienteC;
  procedure ClienteD;

...

implementation

procedure InicioDelPrograma;
begin
  case Cliente of
    A: ClienteA;
    B: ClienteB;
    C: ClienteC;
    D: ClienteD;
  end;
end;

Yo lo que quiero decir es que tu programa no tiene que andar preguntando a ver que cliente es (y cuando tengas 1 millon de clientes vas a estar 1 millon de veces preguntando a ver cual es ???)

Lo que debes hacer es tener varias versiones de la DLL si, pero luego cuando entregas tu programa le pones un nombre generico a la dll, y tu programa lo que hace es cargar siempre esa dll y ejecutar el procesardatos

Me explico?
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
Identificador de llamadas... Sinaloense Varios 4 07-07-2007 21:31:51
2 llamadas a ShellExecute D-MO Varios 13 23-08-2006 18:57:14
Identificador de llamadas en .NET edalmasso Varios 1 18-05-2006 17:02:35
Llamadas al sistema Juan Fuentes API de Windows 1 16-03-2005 16:22:49
ID llamadas telefononicas vichovi API de Windows 3 19-07-2004 13:14:18


La franja horaria es GMT +2. Ahora son las 08:32:03.


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