2009-02-27 27 views
5

Tôi hiện có một mã số mã delphi (win32). Tôi muốn mở rộng chức năng mới, tuy nhiên, kiến ​​thức của tôi là trong .NET (C#), và tôi muốn giữ cơ sở mã hiện tại và thêm chức năng mới trong .NET.Khả năng tương tác của Delphi với .NET

Điều gì, nếu có, là các tùy chọn của tôi (đối với delphi và .NET inter operation)?

Cảm ơn!

Trả lời

7

Tôi chưa sử dụng, nhưng hãy kiểm tra RemObject Hydra.

Hydra giúp bạn dễ dàng kết hợp và phù hợp với bản địa Delphi và quản lý mã NET trong một ứng dụng duy nhất, cho phép các nhà phát triển để lựa chọn các thiết lập tốt nhất của công nghệ cho các nhu cầu của họ.

Về cơ bản, bạn có thể nhúng mã .NET trực quan và không trực quan vào ứng dụng Delphi của bạn và làm việc với nó giống như nó là bản gốc Delphi. Họ có bản dùng thử miễn phí và có cuộc thi chạy ngay bây giờ, nơi bạn có thể win a free copy by reviewing the free trial.

Ngoài ra, bạn có thể sử dụng .NET via COM in Delphi. .NET Assembly có thể bằng ngôn ngữ C#, Prism, VB.NET hoặc .NET.

+0

+1 cho .NET qua COM. Nó không phải là khó để thiết lập, và nó hoạt động tốt cho các chức năng không trực quan (hoặc các hình thức độc lập). Đối với các plugin nhúng trực quan, bạn sẽ muốn sử dụng Hydra. – skamradt

6

Có một vài lựa chọn:

  • Nó có thể tạo ra và phơi bày một lớp .NET trong một hội đồng như một điều khiển COM (interop) để nó có thể sử dụng trong Delphi.

  • Delphi là .Net trong một thời gian (nhưng nó không phải là giờ sáng nhất của Delphi), vì vậy với Delphi 2006 chẳng hạn bạn có thể sử dụng Delphi làm ngôn ngữ .Net. Tuy nhiên, giống như, nếu không nhiều hơn như vậy, bất kỳ thay đổi phiên bản Delphi khác, có những không tương thích với mã nguồn cũ hơn.

EDIT Để làm phương pháp đầu tiên, bạn sẽ muốn tạo lắp ráp của bạn với các lớp/chức năng mà bạn cần trong một ngôn ngữ .NET và biên dịch nó. Bạn nên kết thúc với một DLL.

Trong Delphi, trong menu Thành phần, hãy chọn Nhập thành phần (nó phải ở dưới Gói cài đặt). Bạn sẽ nhận được một thuật sĩ mà cần phải có 3 lựa chọn đài phát thanh

  • thư viện kiểm soát Loại nhập
  • nhập ActiveX
  • nhập NET hội

Chọn thứ ba và bạn sẽ thấy một danh sách của các hội đồng đăng ký toàn cầu. Kể từ khi lắp ráp của bạn chỉ là một DLL vô danh, hãy nhấp vào Thêm gần phía dưới và trong hộp thoại mở chọn DLL.

Trên trang tiếp theo, bạn sẽ được hỏi thông tin về bảng màu. Ở đây bạn có một sự lựa chọn - chỉ định thư mục dự án của bạn và để lại "Tạo thành phần đóng gói" bỏ chọn để thêm lắp ráp cho dự án của bạn mà thôi. Một lựa chọn khác là đặt nó vào thư mục lib hoặc global khác và kiểm tra tùy chọn wrapper, nó sẽ thêm nó vào bảng công cụ cho tất cả các dự án.

Màn hình cuối cùng sẽ hỏi xem bạn có muốn thêm nó vào dự án hiện tại của bạn hay không (phụ thuộc vào việc bạn thêm nó trên toàn cầu hay chỉ cho một dự án).

Khi tất cả được thực hiện bạn sẽ có thể tạo thể hiện của lớp Net của bạn trong Delphi với một cái gì đó như thế này:

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

Bạn có thể biên dịch mã Delphi của bạn cho NET sử dụng mới nhất Delphi Prism (tức năm 2009) . Có thể tạo một hội đồng .NET ra khỏi các tệp Delphi và chúng mở rộng các lớp đó bằng cách sử dụng thường xuyên C#.

Nếu lớp học của bạn được niêm phong, bạn cũng có thể sử dụng các phương pháp mở rộng.

+0

Cẩn thận. Prism là * không * tương thích với mã Delphi theo nhiều cách. Bạn có thể xem tổng quan ở đây: http://prismwiki.codegear.com/en/Win32_Delphi_vs._Delphi_Prism –

0

Tôi tin rằng Delphi, như một vài phiên bản trước, đã biên dịch .NET.

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

"Developer Studio 2006 bao gồm hỗ trợ RAD đầy đủ cho C và C# thêm vào Delphi Win32 và Delphi cho các ngôn ngữ lập trình .NET."

+0

Không giúp được gì, vì không có khả năng tương tác giữa dotNET và ngôn ngữ bản địa, mặc dù chúng sử dụng cùng một IDE. – dummzeuch

+0

Không cần phải tương thích, bạn chỉ cần biên dịch ngôn ngữ trong .NET. Vâng, tôi biết, nói dễ hơn làm, nhưng nó vẫn là một giải pháp cho .NET. –

0

Bạn có thể xem here, chúng tạo trình biên dịch cho Delphi.Net. Điều này có thể là một con đường phía trước.

+0

@Blounty: Oxygene bây giờ là Delphi Prism, và có sẵn thông qua CodeGear. Tôi không nghĩ rằng Oxygene có sẵn để mua riêng biệt nữa (mặc dù vì một lý do nào đó tôi không thể truy cập trang RemObjects từ đây ngay bây giờ để kiểm tra). –

Các vấn đề liên quan