Entwickler-Ecke

Andere .NET-Sprachen - C# und Delphi verheiraten


Harald-K. - Sa 21.07.07 11:07
Titel: C# und Delphi verheiraten
Hallo erstmal,
Ich programmiere noch nicht all zu lang in C# und bin auch völliger Autodidakt. Bisher habe ich C++ und Java (vornähmlich in Linux) programmiert und "wurde" für das aktuelle Projekt einfach mal auf C# (und Windows) gestürzt. Ich kenne mich also in der .Net Welt nicht wirklich aus und Delphi habe ich mir bisher nicht mal von Weitem angesehen.

Mein Problem ist, dass ich ein Kameratrackingsystem entwickelt habe und dessen Logik samt einiger Einstellungsdialoge soll nun in ein Delphi .Net Projekt eingebunden werden. Ein Kollege meinte ich solle es als ActiveX Komponente machen, ein anderer als Com Objekt (Unterschied?). Ich habe mich auch schon über Assemblies belesen, bin aber nun total verwirrt da ich einfach nicht weiß was ich machen kann und wie. Mir würde schon ein Link zu einem Tutorial helfen. Aber ich finde immer nur Erklärungen wie man Delphisachen in C# nutzt.

Zu dem wurde mir noch gesagt, dass es Probleme geben könnte da ich VS2005 (Professional) nutze während das andere Programm mit Borland geschrieben wurde.

Leider habe ich auch keine rechte Zeit mich Stück für Stück in die Windowsprogrammierung und .Net einzulesen, da die Leute am liebsten schon Gestern Ergebnisse gesehen hätten.

Danke schon mal für die Hilfe.


Leuchtturm - Sa 21.07.07 11:19

Über .Net DLL's??

Zitat:
Zu dem wurde mir noch gesagt, dass es Probleme geben könnte da ich VS2005 (Professional) nutze während das andere Programm mit Borland geschrieben wurde.

VS2005 = .net2.0
Delphi.Net = .net1.1

Leuchtturm


mkinzler - Sa 21.07.07 11:20

Delphi-Net Assemblies können genauso wie C#, VB.Net usw verwendet werden.


Christian S. - Sa 21.07.07 11:22

Nur um sicher zu sein: Du hast ein C#-Projekt geschrieben (als EXE oder DLL?), welches Du nun in ein Delphi .NET Projekt einbinden möchtest. Richtig?


Harald-K. - Sa 21.07.07 18:04

Danke für die sehr schnellen Antworten.

Ich habe ein Programm in C# geschrieben und möchte nur die Klassen welche für das Tracking notwendig sind in Delphi nutzen.


Christian S. - So 22.07.07 10:06

Mit welcher .NET Version hast Du unter C# gearbeitet? IIRC kann Delphi bis zur demnächst erscheinenden Version nämlich nur .NET 1.1.


Harald-K. - Mo 23.07.07 15:11

Ich habe bisher in .Net 2.0 gearbeitet.


alias5000 - Mi 01.08.07 21:59

Ich habe mal bei http://delphi-notes.blogspot.com gelesen, dass es möglich ist, den Delphi.NET Compiler gegen .NET 2.0 zu linken. Allerdings nicht die IDE. Vielleich hilft das ein wenig weiter

Gruß
alias5000


QuarksUndCo - Do 30.08.07 17:57
Titel: Legacy Code in .NET einbinden
hi,
es gibt mehrere Möglichkeiten Legacy Code (C++/Java) in .NET Code einzubinden.
1.) Falls Du den C++ Source Code hast, kannst Du diesen einfach in VS2005 (.NET 2.0) mit der Compileroption /CLR übersetzen und so von .NET aus nutzen.
2.) Wenn kein Source Code vorhanden ist, und Du nur eine C++ / Java DLL hast, dann musst Du einen COM Wrapper für die Komponenten bauen.
COM Komponenten können dann einfachst via CCW (COM Callable Wrapper) für die .NET Welt verfügbar gemacht werden. Hierzu einfach für die COM Komponente ein "interop-Assembly" generieren lassen. Dies führt dazu, dass der Wrapper den unmanaged Code in deiner COM Komponente in den managed Bereich überführt (also ein marshaling der Datenen/Objekte durchführt).
Schau einfach mal unter dem folgenden link nach "http://msdn2.microsoft.com/de-de/library/x8fbsf00(VS.80).aspx".

Der Unterschied zwischen ActiveX und COM ist einfach der, dass eine ActiveX Komponente eine COM Komponente ist, die allerdings bestimmte COM Schnittstellen für ActiveX (Verhalten) implementieren muss. Du solltest also für das Wrappen deines legacy Codes zunächst nur einfache COM Klassen verwenden und nicht den ActiveX Overhead mitschleppen. Definiere eigene Schnittstellen die dann deine COM Komponente implementiert.

Selbstverständlich können .NET 1.1 Komponenten (VS2003 und Delphi) und .NET 2.0 Komponenten (VS2005) gemeinsam unter einer .NET 2.0 Runtime verwendet werden.

Zur Vorgehensweise kann ich dir folgende empfehlen:
1.) legacy Code (c++/java) wie unter Punkt 2 beschrieben für .NET verfügbar machen.
2.) .NET 1.1 Komponenten (DLLs) entweder unter Delphi oder VS2003 entwickeln.
3.) .NET 2.0 /3.0 Komponenten und Anwendungen unter VS2005/VS2008 (Orcas) entwickeln.
4.) alle Komponenten Dlls unter VS2005/VS2008 zu einer gemeinsamen Anwendung integrieren.

Grüsse
Wolfgang