古い Borland Pascal 7 / OWL で書かれた大規模な 16 ビット Windows GUI アプリケーションを Delphi に変換するには、どのツール/アプローチをお勧めしますか?
OWL と VCL のかなり大きな違い、および 16 ビット パスカルでのポインター操作と Delphi での文字列とオブジェクトの最先端の使用との違いを理解する - ほぼ完全に回避するのに役立つ方法/ツールはありますかアプリケーションの書き換え?
判断する必要があると思います。
a)ビジネスロジック、データ(ベース)操作、および独自のファイル構造、数学的処理などに関係するコードはどれくらいですか?これは、OWL/BP7 のはるかに小さくて明白な要素を使用して「パスカル」で記述される可能性が高いため、大部分が「現状のまま」持ち上げられる可能性があるものです。たとえば、アプリケーションでこれを行ったとき、独自のファイルのロード/保存、イースターを計算するもの、配列で数学を行うものなどを扱う一連のユニットがありました-これらのものはすべてBP7からDelphiに移行しました(1)ほとんど変化なし。
b) GUI に関連するコードの量 (他には何もない) - メッセージ ループ ハンドラー、ダイアログ要素コンストラクター、コントロールのプロパティなど。このようなものは、Delphi に移植するのに多くの作業が必要です。 .RES->.DFM (または同様のもの) に素敵な行があると、このビットをゼロから構築することになると思います。それが 16 ビットの Windows アプリである場合は、とにかく、少なくとももう少し「モダン」に見えるようにする機会を利用したいと思うでしょう。これは、プロジェクトの中で最も労働集約的な部分になると思います。
c) Delphi では別の方法で実行できることがわかっているものの、現在の Pascal では機能するコードを使用しているコードの割合はどれくらいですか? これは、古いバージョンの Delphi への移行に関する @BloodySmartie のポイントが私にとって理にかなっているところです。そのプロジェクトを Delphi 5/7 のようなものに移植して、文字列操作などに明白な (そしてよく理解されている) 変更を加えることができるはずです。移植せずに残せるものが多ければ多いほど、私の見解ではより良いものになります。実行して基本的な動作を確認するものを入手し、リソースが許す限り、Delphi を最大限に活用するためのリファクタリング/改良のプロセスに着手します。(私がしたように) BP7 にはポインターの配列があるかもしれませんが、各ポインターは、最終的にオブジェクトにつながるポインターの配列に移動します。これが、16 ビット Windows の世界でのメモリ制限を回避する方法でした。アプリを最初に移植したとき、ポインタの配列へのこれらのポインタの配列は、Delphi で問題なく動作し、構造体でもっと「Delphi のような」何かをする時間ができるまで、そのままにしておきました。
しかし、そのすべてを行う前に、なぜアプリを移植するのでしょうか? とにかくアプリの機能に妥当な数の変更を加えようとしているために移植する場合は、アプリを書き直すのに本当に適切な時期かもしれません。Delphi で書き直しても、ビジネス ルールに基づいた関数や手順のチャンクを引き続き使用できるため、最初から完全に書き直す必要はありません。
むかしむかし、私が OWL を VCL (C++ で) に交換したときは、すべてをゼロから作成する方が簡単でした。ユーザー インターフェイスや文字列操作を処理しないコード部分がいくつかあるかもしれませんが、それ以外はまったく異なります。
実際、私の最大のアプリの 1 つがまだ OWL にあります。それが機能する限り、そのままにしておきます。
また、大量のフクロウ アプリケーションがありました (今でもあります)。そのため、16 ビット フクロウを 32 ビット フクロウに移植し、フクロウ ベースのアプリケーションの開発と保守を続けています (実際には、win32 用の Delphi 2007 を使用しています)。
この方法は、vcl に切り替えるよりも簡単で高速です。
乾杯アンドレイ
FrameworkPascal.com は、元の Windows 3.1 コードへの最小限の変更で効果的なソリューションを提供します。しばらくはそうしていましたが、現在は 32 ビット互換の OWL ユニットを使用した丸みを帯びたソリューションを提供しています。また、ODBC SQL ユニット、MAC アドレス ベースのセキュリティ テクノロジ、特殊なユニット CRT のようなユニットも提供します。これらのユニットは、DOS テキストおよびグラフィック モード モード用に記述されたコードを処理でき、新しい 32 ビット グラフィックスと混合され、Windows 32/64 GUI アプリケーションを対象としています。 . レガシー・コードは、OWL Windows MDI でコンパイルできるものである可能性があり、迅速に変更できるモデル・アプリケーションのデモから始まります。