2009-02-27 6 views
5

Mam obecnie kod bazowy kodu delphi (win32). Chcę rozszerzyć nową funkcjonalność, jednak moja wiedza jest w .NET (C#) i chciałbym zachować istniejącą podstawę kodu i dodać nową funkcjonalność w .NET.Współdziałanie Delphi z .NET

Co, jeśli w ogóle, są moje opcje (dla delphi i .NET inter operacyjnego)?

Dzięki!

Odpowiedz

7

Nie użyłem go, ale sprawdź RemObject Hydra.

Hydra ułatwia mix and match natywny Delphi i kod zarządzany .NET w pojedynczej aplikacji, umożliwiając deweloperzy, aby wybrać najlepszy zestaw technologii do ich potrzeb.

Zasadniczo można osadzić wizualny i niewizualny kod .NET w aplikacji Delphi i pracować z nim tak, jakby był natywny dla Delphi. Mają bezpłatny okres próbny. W tej chwili trwa konkurs, w którym można uzyskać win a free copy by reviewing the free trial.

Poza tym możesz użyć .NET via COM in Delphi. Zestaw .NET może być w języku C#, Prism, VB.NET lub dowolnym języku .NET.

+0

+1 dla .NET przez COM. Nie jest to takie trudne do skonfigurowania i działa dobrze w przypadku nie wizualnej funkcjonalności (lub samodzielnych formularzy). Do wizualnych wtyczek wbudowanych będziesz chciał użyć Hydry. – skamradt

6

Istnieje kilka opcji:

  • Możliwe jest tworzenie i narazić klasy .NET w zespole jako kontrolą (COM międzyoperacyjne) tak, że jest użyteczny w Delphi.

  • Delphi był przez jakiś czas .Net (ale nie była to najjaśniejsza godzina Delphi), więc w Delphi 2006 można na przykład używać Delphi jako języka .Net. Jednak tak samo, jeśli nie bardziej, jakakolwiek inna zmiana wersji Delphi, istnieją niekompatybilności ze starszym kodem źródłowym.

EDIT Aby zrobić pierwszy sposób, będziemy chcieli, aby utworzyć zespół z klas/funkcji potrzebnych w języku .NET i skompilować. Powinieneś skończyć z DLL.

W Delphi, w menu Składnik, wybierz Importuj komponent (powinien znajdować się poniżej pakietów instalacyjnych). Dostaniesz kreatora, który powinien mieć 3 opcje radia

  • Rodzaj importu biblioteki kontrola
  • importu ActiveX
  • importu .NET Assembly

Wybierz trzeci, a zobaczysz listę globalnie zarejestrowanych zespołów. Ponieważ twoje złożenie jest po prostu anonimową biblioteką DLL, kliknij Dodaj u dołu i w otwartym oknie dialogowym wybierz bibliotekę DLL.

Na następnej stronie zostaniesz poproszony o podanie informacji o palecie. Tutaj masz wybór - określ folder projektów i pozostaw niezaznaczone pole wyboru "Generuj obkładki składników", aby dodać zespół tylko do projektu. Innym wyborem jest umieszczenie go w lib lub innym folderze globalnym i sprawdzenie opcji opakowania, która doda ją do palety narzędzi dla wszystkich projektów.

Ostatni ekran zapyta, czy chcesz go dodać do bieżącego projektu (zależy od tego, czy dodajesz go globalnie, czy tylko do jednego projektu).

Po zakończeniu wszystko powinno być w stanie utworzyć instancje klasy .NET w Delphi z mniej więcej tak:

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

można skompilować kod Delphi for .NET przy użyciu najnowszych Delphi Prism (czyli 2009) . Możliwe jest utworzenie zestawu .NET z plików Delphi i rozszerzenie tych klas za pomocą C#.

Jeśli twoje zajęcia są zapieczętowane, możesz również użyć metod rozszerzających.

+0

Ostrożnie. Pryzmat jest * nie * zgodny z kodem Delphi na wiele sposobów. Możesz uzyskać przegląd tutaj: http://prismwiki.codegear.com/en/Win32_Delphi_vs._Delphi_Prism –

0

Wierzę, że Delphi, jak kilka wersji temu, ma kompilację .NET.

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

"Developer Studio 2006 zawiera pełne wsparcie RAD dla C i C#, oprócz Delphi Win32 i Delphi dla języków programowania .NET."

+0

Nie pomaga, ponieważ nie ma interoperacyjności między dotNET i językami ojczystymi, nawet jeśli korzystali z tego samego IDE. – dummzeuch

+0

Nie musi być interoperacyjności, wystarczy skompilować język w .NET. Tak, wiem, łatwiej powiedzieć niż zrobić, ale nadal jest to rozwiązanie .NET. –

0

Możesz mieć wygląd here, produkują kompilator dla Delphi.Net. To może być droga do przodu.

+0

@Blounty: Oxygene jest teraz Delphi Prism i jest dostępny przez CodeGear. Nie sądzę, aby Oxygene był już dostępny do osobnego zakupu (chociaż z jakiegoś powodu nie mogę teraz przejść do strony RemObjects, aby sprawdzić). –