2009-02-27 6 views
5

私は現在、デルファイ(win32)コードのコードベースを持っています。私は新しい機能を拡張したいと思いますが、私の知識は.NET(C#)にあり、既存のコードベースを維持して、.NETに新しい機能を追加したいと思います。Delphiと.NETの相互運用性

もしあれば、私の選択肢は何ですか(デルファイと.NETインターオペレーションのためのものですか?

ありがとうございます!

答えて

7

私はそれを使用していませんが、RemObject Hydraを確認してください。

ハイドラはそれ簡単ミックスと一致 ネイティブDelphiと 開発者が自分のニーズに合わせて 技術の最良のセットを選択することができ、 1つのアプリケーションで.NETコードを管理します。

基本的には、Delphiアプリケーションにビジュアルと非ビジュアルの.NETコードを埋め込み、Delphiネイティブと同じように使用できます。彼らは無料トライアルを持っており、今すぐできるコンテストはwin a free copy by reviewing the free trialです。

それ以外では.NET via COM in Delphiを使用できます。 .NETアセンブリは、C#、Prism、VB.NET、または任意の.NET言語にすることができます。

+0

+1 for .NET via COM。セットアップが難しくないし、非視覚的な機能(またはスタンドアロンのフォーム)でもうまく機能する。ビジュアルに埋め込まれたプラグインの場合は、Hydraを使用することをお勧めします。 – skamradt

6

いくつかのオプションがあります:

  • それは、Delphiで使用可能となるように、COMコントロール(相互運用)としてアセンブリ内の.NETクラスを作成し、公開することが可能です。

  • Delphiは.Netです(ただし、Delphiの最も明るい時間ではありません)。したがって、Delphi 2006では、たとえばDelphiを.Net言語として使用できます。しかし、そうでなくても、他のDelphiのバージョンが変更された場合と同様に、古いソースコードとの互換性もありません。第一の方法を行うには

EDIT 、あなたは.NET言語で必要なクラス/機能を使用してアセンブリを作成し、それをコンパイルすることをお勧めします。あなたはDLLで終わるべきです。

Delphiでは、「コンポーネント」メニューの「コンポーネントのインポート」(「パッケージのインストール」の下にあります)を選択します。あなたは3つのラジオのオプションを持っている必要があり、ウィザード

  • インポートタイプライブラリ
  • インポートActiveXコントロール
  • インポート.NETアセンブリ

を得るでしょう三分の一を選択して、あなたはリストが表示されます世界的に登録されたアセンブリのあなたのアセンブリは匿名DLLなので、下部にあるAddをクリックし、開いているダイアログでDLLを選択します。

次のページでは、パレット情報を求められます。ここでは、プロジェクトフォルダのみを指定し、プロジェクトにのみアセンブリを追加する場合は[Generate Component Wrappers]のチェックをはずしておきます。もう1つの選択肢は、libまたは他のグローバルフォルダに配置し、ラッパーオプションをチェックすることです。これにより、すべてのプロジェクトのツールパレットに追加されます。

現在のプロジェクトに追加するかどうかを尋ねる最後の画面が表示されます(プロジェクトをグローバルに追加するか、1つのプロジェクトに追加するかによって異なります)。

すべてが完了したら、あなたがこのようなもので、Delphiであなたの.Netクラスのインスタンスを作成することができるはずです。

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

あなたは、最新のDelphi Prism(すなわち2009)を使用して、.NETのためのあなたのDelphiのコードをコンパイルすることができます。 Delphiのファイルから.NETアセンブリを作成することは可能であり、それらは定期的にC#を使用してそのクラスを拡張します。

クラスが封印されている場合は、拡張メソッドを使用することもできます。

+0

注意してください。 Prismは、Delphiコードと多くの点で互換性がありません。ここで概要を知ることができます:http://prismwiki.codegear.com/en/Win32_Delphi_vs._Delphi_Prism –

0

私はいくつかのバージョンの前にDelphiが.NETコンパイルを持っていると信じています。

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

"のDeveloper Studio 2006 .NETプログラミング言語のためのデルファイのWin32とDelphiに加えて、CやC#のための完全なRADのサポートが含まれています。"

+0

同じIDEを使用していたとしても、dotNETとネイティブ言語との相互運用性がないため、サポートされません。 – dummzeuch

+0

相互運用性は必要ありません。.NETで言語をコンパイルするだけです。はい、私は知っている、簡単に言ったが、それはまだ.NETのソリューションです。 –

0

hereのように見えますが、それらはDelphi.Net用のコンパイラを生成します。これはおそらく将来の道になるかもしれない。

+0

@Blounty:OxygeneはDelphi Prismになりました。CodeGearから入手できます。私はOxygeneが別の購入のためにもう利用可能ではないと思っています(何らかの理由で私はRemObjectsのサイトに今チェックすることはできません)。 –