Jump to content


Photo

Dlls delphi programacion en capas


  • Please log in to reply
2 replies to this topic

#1 ovivasar

ovivasar

    Newbie

  • Miembros
  • Pip
  • 3 posts

Posted 16 March 2012 - 10:23 AM

Hola a Todos, soy nuevo en programacion delphi pero ya desarrolle anteriormente en basic y c#
y motivado por la naturaleza del codigo nativo delphi, es que necesito saber como se puede referenciar una dll en un proyecto multicapa delphi. 
solo encontre una forma usando el "external"

function Registrar_venta(CDSCabecera, CDSDetalle : TClientDataSet): Boolean; external 'Datos.dll';

sucede que por cada bendita funcion tengo que hacerlo, y eso es demasiado tedioso

cuando lo hacia en c#, simplemente usaba el " using Datos; using Negocio; "  y listo cada capa o proyecto podia usar todas las funciones

PORFAVOR ALGUIEN SABE COMO trabajar en capas de manera similiar
en delphi XE solo encontre la propiedad DEPENDENCIAS, pero aun asi no reconoce las funciones de cada dll o capa

Muchas Gracias por sus respuestas


  • 0

#2 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1750 posts
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Posted 16 March 2012 - 10:54 AM

Pues igualmente..., puedes hacer DESDE Delphi una DLL con tus procedimientos y demás, o usar unidades para cada capa. Así le hago yo, tengo una unidad para la capa de negocios (y para mayor abundamiento, para CADA objeto de negocio) y otra para la de datos.

En Delphi tienes que "romper" algunos paradigmas de pensamiento, sobre todo referente a la estructuración de programación.
  • 0

#3 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1092 posts
  • LocationMurcia, España

Posted 16 March 2012 - 11:08 AM

La tecnica que comentas de referenciar las funciones una a una es una opcion, pero tienes tambien otra, que es cargar la dll dinamicamente desde codigo con loadlibrary(filename), y luego pedirle la direcion de una funcion con otra funcion no se si era ProcAdd() o algo similar, y finalmente llamarla sin mas que usar ese puntero con un cast al tipo de funcion (tipos de parametros y respuesta).

Eso si, si tienes 5 tipos de funciones a nivel de parametros y resultados, has de declarar esos 5 tipos en tu capa usuaria de la dll porque sino el puntero solo no te sirve para llamar la funcion si no le haces el cast correcto.

Lo que tu propones se llama early binding y lo otro late binding, si buscar por delphi dll y uno de los dos tipos, veras mas detalles en google, de memoria no recuerdo los detalles exactos.
  • 0




IP.Board spam blocked by CleanTalk.