Совместимость Delphi с.NET

У меня в настоящее время есть кодовая база кода delphi (win32). Я хочу расширить новые функциональные возможности, однако мои знания в.NET (C#), и я хотел бы сохранить существующую кодовую базу и добавить новые функциональные возможности в.NET.

Что, если таковые имеются, мои варианты (для взаимодействия Delphi и.NET)?

Спасибо!

5 ответов

Решение

Я не использовал его, но посмотрите RemObject Hydra.

Hydra упрощает смешивание и сопоставление исходного кода Delphi и управляемого кода.NET в одном приложении, что позволяет разработчикам выбирать лучший набор технологий для своих нужд.

По сути, вы можете встраивать визуальный и невизуальный код.NET в ваше приложение Delphi и работать с ним так же, как и с родным Delphi. У них есть бесплатная пробная версия, и прямо сейчас проходит конкурс, где вы можете выиграть бесплатную копию, просмотрев бесплатную пробную версию.

Помимо этого, вы можете использовать .NET через COM в Delphi. Сборка.NET может быть на C#, Prism, VB.NET или на любом языке.NET.

Есть несколько вариантов:

  • Можно создать и предоставить класс.NET в сборке в качестве COM-элемента управления (взаимодействия), чтобы его можно было использовать в Delphi.

  • Некоторое время Delphi был.Net (но это был не самый яркий час Delphi), поэтому, например, в Delphi 2006 вы можете использовать Delphi в качестве языка.Net. Однако, как и, если не больше, при любом другом изменении версии Delphi, существуют несовместимости с более старым исходным кодом.

РЕДАКТИРОВАТЬ Чтобы сделать первый метод, вы захотите создать свою сборку с нужными вам классами / функциями на языке.NET и скомпилировать ее. Вы должны в конечном итоге с DLL.

В Delphi в меню "Компонент" выберите "Импорт компонента" (он должен быть ниже "Установить пакеты"). Вы получите мастера, который должен иметь 3 варианта радио

  • Библиотека типов импорта
  • Импортировать элемент управления ActiveX
  • Импорт сборки.NET

Выберите третий, и вы увидите список глобально зарегистрированных сборок. Поскольку ваша сборка является просто анонимной DLL, нажмите кнопку "Добавить" внизу и в открывшемся диалоговом окне выберите DLL.

На следующей странице вам будет предложено ввести информацию о палитре. Здесь у вас есть выбор - укажите папку с вашими проектами и оставьте флажок "Generate Component Wrappers" снятым, чтобы добавить сборку только в ваш проект. Другой вариант - поместить его в библиотеку lib или другую глобальную папку и выбрать параметр оболочки, который добавит его в палитру инструментов для всех проектов.

На последнем экране появится вопрос, хотите ли вы добавить его в текущий проект (зависит от того, хотите ли вы добавить его глобально или только в один проект).

Когда все будет сделано, вы сможете создавать экземпляры вашего.Net-класса в Delphi примерно так:

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

Вы можете скомпилировать свой код Delphi для.NET, используя последнюю версию Delphi Prism (например, 2009). Можно создать сборку.NET из файлов Delphi, и они расширяют эти классы, используя регулярно C#.

Если ваши классы запечатаны, вы также можете использовать методы расширения.

Я считаю, что Delphi, как и несколько версий назад, имеет компиляцию.NET.

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

"Developer Studio 2006 включает полную поддержку RAD для C и C# в дополнение к Delphi Win32 и Delphi для языков программирования.NET".

Вы можете посмотреть здесь, они производят компилятор для Delphi.Net. Это может быть путь вперед.

Другие вопросы по тегам