17

私は、Delphi 7 で書かれた古い PC 専用アプリケーションを維持しています。以前は Delphi が非常に役に立ちましたが、現在はこの 1 つのアプリケーションにのみ使用しており、言語に関するスキルが低下していることに気づきました。その構文は、Java/Ruby の私の「本業」の言語とはあまりにも異なっているため、新しいコードを作成するのに慣れるのに時間がかかります。また、あまりにも古いため、多くのインターフェースを使用していないため、コードが管理されていません。今私には古代のようです!

私のユーザーの多くは、互換モードでアプリを実行するか、IT 部門による PC の構成方法に応じて GPF の問題が発生する可能性がある Vista に移行しているため、アプリケーションのメンテナンスを行う必要があります。より使い慣れたスタックにジャンプする必要があるかどうか疑問に思っています。

コード ベースを C# に変換する作業を自動的に行って、非標準コンポーネントの変換に専念させてくれる自動ツールはありますか? 私は、 BDE と互換性があり、全体で標準 SQL を使用するAbsoluteDatabaseと呼ばれる組み込みデータベース コンポーネントと、Microsoft 世界のものと交換できるネイティブの Delphi HTML ブラウザ コンポーネントを使用しています。

これらの変換ツールはどれくらい優れていますか?

4

4 に答える 4

14

私はその変換を行うための自動化されたツールを知りません。個人的には、Delphiを使い続けることをお勧めします。おそらく、新しいバージョンにアップグレードするだけです。DelphiからC#に変換しようとするいくつかのコードDOMを見たことがありますが、それはライブラリの問題に対処していません。

CodeGear(正式にはBorland)には、C#からDelphiに移行するためのツールがあります。反対方向に進むツールも同じように機能すると思います(多くの編集が必要です)。これは、同じCodeDOMの原則に基づいてDelphiからC#(および他の多くの言語)に移行するスウェーデン語のツールです。他にもありますが、今は見つかりません。

もう1つのオプションは、より再送されたバージョンのDelphi for .NETにアップグレードし、その方法でコードを.NETに移植することです。Delphi for .NETで動作するようになったら(.NETバージョンがない限り組み込みDBを除いて、非常に簡単です)、.NETリフレクターファイル逆アセンブラーを使用してILをC#に戻すことができます。引き続きVCLを使用しますが、Object pascalの代わりにC#を使用できます。

別の同様の解決策は、RemObjectsによってOxygeneに移植することです。WinFormsへのDelphiWin32移行パスがあると思います。次に、.NETリフレクターファイル逆アセンブラーを使用してILをC#に戻します。

要するに、簡単な答えはありません。言語の移行は、ライブラリの移行よりも簡単です。その多くは、(AbsoluteDatabase以外で)使用したサードパーティコンポーネントと、アプリケーションで直接WindowsAPI呼び出しを行ったかどうかによって異なります。

もう1つのまったく異なるオプションは、アプリケーションを維持するためにオフショアチームを探すことです。彼らはおそらくそう安くすることができます。国内で誰かを見つけることはできますが、それは間違いなくあなたにもっと費用がかかるでしょう(ドルの下落と貧しい雇用市場であなたは決して知りませんが..。)

幸運を!

于 2008-09-12T17:42:12.340 に答える
7

John Brant による 150 万行の Delphi プロジェクトの C# への変換が成功したという科学的報告があります。彼は Delphi パーサー、C# ジェネレーター、および AST に関する多くの変換ルールを作成しました。一連のルールを徐々に拡張し、毎日のビルド、多くの単体テスト、難しい Delphi の部分の書き直しを行うことで、Delphi と C# の深い知識を持つ元の開発者を含む 4 人のチームで、 18か月でソフトウェア。John Brant は、リファクタリング ブラウザーと SmaCC コンパイラー構築キットの最初の開発者であるため、それほど速く作業を進めることはまずありません。

于 2013-10-25T17:08:33.490 に答える
4

私のユーザーの多くは、互換モードでアプリを実行するか、IT 部門による PC の構成方法に応じて GPF の問題が発生する可能性がある Vista に移行しているため、アプリケーションのメンテナンスを行う必要があります。より使い慣れたスタックにジャンプする必要があるかどうか疑問に思っています。

非標準的なことをしていない限り、D7 アプリケーションは Vista で正常に動作するはずです。

C# への変換に関しては、ほとんどの変換ツールは時間の無駄だと思います。より良い方法は、アプリケーションを最初から書き直すことです。

于 2008-09-15T09:38:47.313 に答える
2

簡単な答えはありませんが、言語の Delphi.net バリアントは .net ランタイムをターゲットにしており、.net 上のさまざまな言語が密接に相互運用できることを覚えておいてください。

それを Delphi.Net でコンパイルし、さまざまなアセンブリに分解してから、アセンブリを 1 つずつ手動で変換してみることができます。Reflector は、コンパイルされたコードを C# コードのスケルトンにリバース エンジニアリングするのに役立ちます。同等ですが、コメントや内部変数名などは除きます。

一方、Delphi.net は、このプロジェクトには十分 (TM) である可能性があります。

しかし、優れたテスト スイートがない限り (Delphi 7 の最新技術を考えると、おそらくそうではないと思います)、バグが発生することになります。

于 2008-09-15T09:46:43.067 に答える