目次

既存アプリケーションをコンパイルする - 自分用メモ

Delphi 7 で作成した既存のアプリケーションをコンパイルできるか試してみます。

事例1

今回使うのは、比較的サイズの小さい、木構造で四角形のデータを格納するプログラムを試しに使ってみたいと思います。


まず、Delphi7 で作成したプロジェクトのdpr ファイルをDelphi8から開きます。


そのままフォームは表示できるよううです。コンポーネントは PaintBox Panel Button TreeView Memo などの一般的なものしか使っていません。

で、コンパイルするのですが、エラーが出ました。QuickSortでPointer型はだめよといわれています。

この代入も Delphi8ではサポートしてくれないようです。



Pointer型はだめですので、当然、PPointerListなどもってのほかです。

Language Issues in Porting VCL Applications to Delphi 8 for .NET には、Pointer型は(安全な.NETではそんな危険(Unsafe)な型は)使えないよ。とのことです、下のように、TObjectに直しなさい!と指示されています。

しかし、こう(すべてのケースで)すんなり直せるのだろうか… ちなみにビットシフトもunsafeなコードだそうです。結局このプログラムは Pointer型が非常に多いことで、unsafeのオンパレードになりそうだったので、断念しました。

結局、数学的データ処理部や構造体をポインタで渡すような部分は再設計からしなおす必要があるのかもしれません。(あるいは移植せずにWin32のままにするか)

事例2

今度は、さらに小さなEUCテキストエディタをコンパイルしてみます。

まず、dprファイルを開きます。

フォームはきれいに読み込めます。

で、コンパイルすると、pchar でエラーが出ます。ここは unsafeにして回避します。

すると File of byte がunsupported とか言ってくれます。.NETコンパイラでは、対応してくれないようです。typed file と untyped file がだめなので、 F:File; などもエラーが出ます。 TextFile はいいようです。これは unsafeにしても逃げられませんでした。 しかし、言語ガイドには、ちゃんと書いてあります。今後Win32 コンパイラを出す気満々なのでしょうか?


これも結局手間がかかりそうなのでここでストップしました。

事例3

さらに単純なアプリケーションならば通るかもしれないとのことで、ワイヤーフレームを描画して回転させるプログラムを試してみました。

読み込みはいつもどおりスムーズに行われます。

コンパイルするとRectなんて知らないよ。といわれます。


borland.vcl.types をusesに書き足します。

これでコンパイルが通って動きます。 pchar も File も Pointer も使わないプログラムだったら、ほとんど修正しなくても移行することができます。(そんなプログラムがどれだけあるかは謎ですが)


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2004-01-27
Copyright © iPentec all rights reserverd.