2009-02-27 15 views
5

Actualmente tengo una base de código del código delphi (win32). Quiero ampliar la funcionalidad nueva, sin embargo, mi conocimiento está en .NET (C#), y me gustaría mantener la base de códigos existente y agregar nuevas funcionalidades en .NET.Interoperabilidad de Delphi con .NET

¿Cuáles son mis opciones (en caso de existir) (para delphi y .NET inter operating)?

Gracias!

Respuesta

7

No lo he usado, pero échale un vistazo a RemObject Hydra.

Hydra hace que sea fácil de mezclar y combinar Delphi nativo y código administrado de .NET en una sola aplicación, lo que permite a los desarrolladores para elegir el mejor conjunto de tecnologías para sus necesidades.

Básicamente puede incrustar el código .NET visual y no visual en su aplicación Delphi y trabajar con ella como si fuera Delphi. Tienen una versión de prueba gratuita, y hay un concurso en este momento donde puedes win a free copy by reviewing the free trial.

Más allá de eso, puede usar .NET via COM in Delphi. .NET Assembly puede estar en C#, Prism, VB.NET o cualquier lenguaje .NET.

+0

+1 para .NET a través de COM. No es tan difícil de configurar, y funciona bien para la funcionalidad no visual (o formas independientes). Para los complementos integrados visuales, querrás usar Hydra. – skamradt

6

hay algunas opciones:

  • Es posible crear y exponer una clase .NET en un conjunto como un control COM (interoperabilidad) para que sea utilizable en Delphi.

  • Delphi fue .Net por un tiempo (pero no fue la hora más brillante de Delphi), por lo que con Delphi 2006, por ejemplo, puede utilizar Delphi como un lenguaje .Net. Sin embargo, al igual que, si no más, cualquier otra modificación de la versión de Delphi, existen incompatibilidades con el código fuente anterior.

EDITAR para hacer el primer método, tendrá que crear su ensamblaje con clases/funcionalidad que necesita en un lenguaje .NET y compilarlo. Deberías terminar con una DLL.

En Delphi, en el menú Componente, seleccione Importar componente (debe estar debajo de Paquetes de instalación). Usted obtendrá un mago que debe tener 3 opciones de radio

  • biblioteca de controles tipo de importación
  • ActiveX importación
  • Asamblea .NET importación

Seleccione la tercera y verá una lista de asambleas registradas a nivel mundial. Como su ensamblado es solo una DLL anónima, haga clic en Agregar cerca de la parte inferior y en el cuadro de diálogo de abrir, seleccione la DLL.

En la página siguiente, se le solicitará información sobre la paleta. Aquí tiene una opción: especifique la carpeta de proyectos y deje desactivada la opción "Generar envoltorios de componentes" para agregar el ensamblaje únicamente a su proyecto. La otra opción es colocarlo en la lib u otra carpeta global y verificar la opción de envoltura, que lo agregará a la paleta de herramientas para todos los proyectos.

La última pantalla le preguntará si desea agregarla a su proyecto actual (depende de si lo está agregando globalmente o solo a un proyecto).

Cuando todo está hecho usted debería ser capaz de crear instancias de la clase .Net en Delphi con algo como esto:

var MyCSharpClassInstance: TMyCSharpClassProvider; 
begin 
    MyCSharpClassInstance:=CoTMyCSharpClassProvider.Create; 
    … 
    MyCSharpClassInstance.Free; 
End 
2

puede compilar el código de Delphi para .NET utilizando la última Delphi Prism (es decir, 2009) . Es posible hacer un ensamblado .NET a partir de archivos Delphi y ampliar esas clases usando C# regularmente.

Si sus clases están selladas, también puede usar métodos de extensión.

+0

Cuidado. Prism * no * es compatible con el código Delphi de muchas maneras. Puede obtener una descripción general aquí: http://prismwiki.codegear.com/en/Win32_Delphi_vs._Delphi_Prism –

0

Creo que Delphi, desde hace varias versiones, tiene compilación de .NET.

http://www.codegear.com/products/bds2006

"Developer Studio 2006 incluye soporte completo para RAD C y C#, además de Delphi Win32 y Delphi para lenguajes de programación .NET."

+0

No ayuda, porque no hay interoperabilidad entre dotNET y los idiomas nativos, a pesar de que utilizan el mismo IDE. – dummzeuch

+0

No es necesario que haya interoperabilidad, simplemente compila el idioma en .NET. Sí, lo sé, es más fácil decirlo que hacerlo, pero sigue siendo una solución para .NET. –

0

Podrías echar un vistazo here, producen un compilador para Delphi.Net. Esto podría ser un camino a seguir.

+0

@Blounty: Oxygene ahora es Delphi Prism, y está disponible a través de CodeGear. No creo que Oxygene ya esté disponible para compras separadas (aunque por alguna razón no puedo acceder al sitio de RemObjects ahora mismo para verificarlo). –

Cuestiones relacionadas