Tenemos un proyecto lleno de componentes personalizados que hoy está trabajando en Lazarus y Delphi.¿Cuáles son las diferencias entre la implementación de interfaces en Delphi y Lazarus (FPC)?
Estoy pensando en las interfaces de código en él, pero no estoy mucho más familiarizado con ellos. Lo que me gustaría saber es: ¿cuáles son los matices de implementación de las interfaces de Delphi y Lazarus? Hay algo de lo que debería ser especialmente consciente? ¿Tendré que codificar cosas realmente diferentes?
Explicación de fondo: Creo que los componentes podrían beneficiarse de las interfaces, o al menos, aprenderé más de ellas. Por ejemplo, uno de los componentes hace la comunicación a muchos hardwares diferentes usando el puerto serie. Pero el usuario debe usar solo nuestro componente para crear la aplicación. Entonces tenemos el componente y una clase para cada uno de estos hardware que descienden de una clase base. En tiempo de ejecución creamos la clase específica dentro del componente.
no era necesario asegurarse de que esta última explicación, pero puedo escribir más si alguno de ustedes lo necesitan.
Aquí es un [ 'reading' de base] (http://www.freepascal.org/docs-html/ref/refch7.html#x84-940007) sobre las interfaces en FreePascal. Como conclusión muy rápida, diría que si se dirige a la plataforma Windows y utiliza la arquitectura COM de Windows (las interfaces que descienden de IUnknown) no habría diferencia en el código de Delphi, pero la respuesta a su pregunta debería ser más sofisticado. – TLama
¿Qué quiere decir con "matices de implementación"? No parece que eso realmente te importe. Lo que importaría sería si se puede o no escribir código que * signifique * lo mismo para ambos compiladores, independientemente de cómo cada compilador realmente implemente las interfaces. –
@DavidHeffernan Quiero decir "pequeñas diferencias en la implementación". Tal vez no pueda escribir código que signifique lo mismo para ambos, pero tal vez, no necesitaría escribir todas las cosas para cada compilador. Le pregunté por qué esperaba hacerlo, pero no sé si hay alguna diferencia en ambos compiladores en este caso. ¿Está esto más claro ahora? – EMBarbosa