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

Dlls delphi programacion en capas
Started by
ovivasar
, Mar 16 2012 10:23 AM
2 replies to this topic
#1
Posted 16 March 2012 - 10:23 AM
#2
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.
En Delphi tienes que "romper" algunos paradigmas de pensamiento, sobre todo referente a la estructuración de programación.
#3
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.
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.