Delphi 7 アプリケーションを C# および .Net Framework に変換するツールは何ですか?[閉まっている]

StackOverflow https://stackoverflow.com/questions/59547

  •  09-06-2019
  •  | 
  •  

質問

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

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

コード ベースを C# に変換する作業を自動化して、非標準コンポーネントの変換に集中できる自動ツールはありますか?という組み込みデータベースコンポーネントを使用しています 絶対データベース これは BDE と互換性があり、全体的に標準 SQL を使用しており、Microsoft の世界のものと交換できるネイティブの Delphi HTML ブラウザ コンポーネントを使用しています。

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

役に立ちましたか?

解決

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

CodeGear (正式には Borland) には、次のツールがあります。 C# から Delphi への移行 それは問題なく動作します。他の方向のツールも同じように機能すると思います(多くの編集が必要です)。これは、同じ CodeDOM 原則に基づいて動作するスウェーデンのツールです。 Delphi から C# へ (そして他の多くの言語)。他にもありますが、今のところ見つかりません。

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

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

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

もう 1 つの完全に異なるオプションは、アプリケーションを保守するオフショア チームを探すことです。おそらく安くできるでしょう。国内で人材を見つけることもできますが、費用がさらにかかることは間違いありません(ただし、ドルの低迷と劣悪な雇用市場では、いつになるかわかりません。。。)

幸運を!

他のヒント

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

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

標準以外のことを行っている場合を除き、D7 アプリケーションは Vista で正常に動作するはずです。

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

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

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

一方、このプロジェクトには Delphi.net で十分 (TM) かもしれません。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top