目次

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

目次

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

事例1

今回使うのは、比較的サイズの小さい、木構造で四角形のデータを格納するプログラムを試しに使ってみたいと思います。
既存アプリケーションをコンパイルする - 自分用メモ:画像1

まず、Delphi7 で作成したプロジェクトのdpr ファイルをDelphi8から開きます。
既存アプリケーションをコンパイルする - 自分用メモ:画像2

そのままフォームは表示できるよううです。コンポーネントは PaintBox Panel Button TreeView Memo などの一般的なものしか使っていません。
既存アプリケーションをコンパイルする - 自分用メモ:画像3

で、コンパイルするのですが、エラーが出ました。QuickSortでPointer型はだめよといわれています。
既存アプリケーションをコンパイルする - 自分用メモ:画像4

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


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

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

Language Issues in Porting VCL Applications to Delphi 8 for .NET には、Pointer型は(安全な.NETではそんな危険(Unsafe)な型は)使えないよ。とのことです、下のように、TObjectに直しなさい!と指示されています。
既存アプリケーションをコンパイルする - 自分用メモ:画像6

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

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

事例2

今度は、さらに小さなEUCテキストエディタをコンパイルしてみます。
既存アプリケーションをコンパイルする - 自分用メモ:画像7

まず、dprファイルを開きます。
既存アプリケーションをコンパイルする - 自分用メモ:画像8

フォームはきれいに読み込めます。
既存アプリケーションをコンパイルする - 自分用メモ:画像9

で、コンパイルすると、pchar でエラーが出ます。ここは unsafeにして回避します。
既存アプリケーションをコンパイルする - 自分用メモ:画像10

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

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

事例3

さらに単純なアプリケーションならば通るかもしれないとのことで、ワイヤーフレームを描画して回転させるプログラムを試してみました。
既存アプリケーションをコンパイルする - 自分用メモ:画像12

読み込みはいつもどおりスムーズに行われます。
既存アプリケーションをコンパイルする - 自分用メモ:画像13

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

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

borland.vcl.types をusesに書き足します。
既存アプリケーションをコンパイルする - 自分用メモ:画像15

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


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