Delphiコアの周りのC#ラッパーは、維持して実行するのが簡単であり、そうでない場合、ラッパーを作成するというアイデアはあまり役に立ちません。私はそれが間違って考えられた概念だと信じています。
私は望遠鏡と話すことができるアプリケーションを作ったとします。それは完全にそれを行います。その場合、望遠鏡通信部分だけを抽出してDLLに入れ、C#でDelphi DLLを使用してテレスコープ通信タスクを実行するユーザーインターフェイスを作成することができます。しかし、あなたのDelphiアプリケーションが既にうまく構築されていない限り、この望遠通信ライブラリのようなタスクが既に存在していない限り、Delphiアプリケーションの一部を抽出するのは非常に簡単ではなく、C#から使います。そのような状況が存在するなら、私はネイティブのDelphi DLL関数のエクスポートを使用し、C#からそれらを呼び出すでしょう。これは、既存のdelphi実行ファイルを使用していないため、Delphiアプリケーションの一部をC#から使用できるものにリファクタリングするのに、長時間の作業が必要です。
もう1つの答えはCOMサーバーについて言及していますが、これは可能ですが、簡単にすることはできません。正規表現についての古い冗談のように。問題があり、正規表現を使用して問題を解決しようとすると、今は2つの問題があります。 COMサーバーを使用して既存のアプリケーションを隠し、C#を使用して新しいUIを全体的に作成しようとすると、同じことが成り立ちます。純粋にデルファイで開発するか、純粋にC#で開発し続けるよりも、それを改善し、デバッグし、開発する技術的スキルが実際に必要です。それは努力のマイナスの節約です。
Delphiアプリケーションの機能についての情報はありませんが、デルファイアプリケーションが何らかのファイル形式を読み込んだり、通信プロトコルを使用したり、古いデータベースに接続したりする基幹業務アプリケーションであると仮定しますあなたが書き直したくないということです。
C#UIを作成すると、Delphiアプリケーションのユーザーインターフェイスを表示せずにC#のものに置き換えることができれば、あなたのアイデアは何も改善されず、物事は悪化する。あなたのデッドロックは、熟練したデルファイの開発者がいなくても、既存のアプリケーションが何をしているかを理解できる巧妙な開発者がいなくてもかまいません。
解決策は、この状況では通常人間の解決策です。熟練したデルファイ開発者を雇い、アプリケーションを現代のデルファイ時代(デルファイXE2)に持ち込むか、熟練した非デルファイ開発者を雇い、アプリケーションを他の言語に移植するかのいずれかです。デルファイアプリケーションの上に「ラッパー」を書くことを提案する人は誰でも、既存のアプリケーションを書き直すことができないと感じていることは明らかです。
私はあなたのデルファイアプリケーションが何をしているかについては十分に分かっていませんが、確かに私には「恐怖主義」の決定が好きです。古いコードをラップすることは、決して良い考えではなく、最も多くの場合、より多くの問題を作成するだけです。
脇に、私は反射がこれに入るのか分かりません。あなたはそれが何を意味するのですか? –
私は数年前にこのコードを見てきましたが、それはリフレクションを使ってDelphiのexeを呼び出してからexe内の特定のメソッドを呼び出すと説明されました。残念ながらこれは以前の会社のものでしたが、私はもうコードにアクセスできません。 – zeencat
それは意味をなさない。 C#のリフレクションはDelphiのexeでは動作しません。 –