[ top ] [ prev ] [ up ] [ next ] Last-Modified: 2005/09/07

Delphi6 への移行

Delphi5 プロジェクトを Delphi6 プロジェクトに変換する

通常 Delphi5 プロジェクトは何もしなくても Delphi6 で開くことができ,コンパイルすることができる。
ただ,少し凝ったプログラムの場合,互換性のない Unit を使っていたり,互換性のない書き方になっていたりするので,少し修正する必要がある (Delphi ヘルプ『Delphi 6 へのアップグレード』) 。
修正の際に下位互換性を確保するために {$IFDEF VER140} (Delphi6) を使うべきだろうか。読みにくくなるので私はあまり {$IFDEF} を使いたくない。Delphi6 に移行したソースコードは Delphi6 専用ソースコードとしておきたい。CLX に移植すると必然的に {$IFDEF MSWINDOWS} {$IFDEF LINUX} が必要になるので,なおさら VER 指定は避けたい。が,デバッグの煩雑さを考えるとそうも言ってられないのが悩ましいところである。
VER 定数
  Delphi1      VER80
  Delphi2      VER90
  C++Builder1  VER93
  Delphi3      VER100
  C++Builder3  VER110
  Delphi4      VER120
  C++Builder4  VER125
  Delphi5      VER130
  C++Builder5  VER130
  Delphi6      VER140

実行時パッケージ指定の変換

実行時パッケージを使うプロジェクトを Delphi5 から Delphi6 へ移行する際には,IDE で開くと自動的に変換がなされる。ここで下位互換性を確保するために *.dof と *.cfg を手動で変換したいと考える。
Apollo は Phi 拡張ライブラリを書いて require することができるので,究極的にはすべての実行時パッケージを使うことになる。しかし,Enterprise 版の実行時パッケージすべてを *.dof, *cfg に指定しておくと,Delphi6 Personal ユーザが ProjectApollo.bpg を構築する場合に,存在しない実行時パッケージを外さなくてはならなくなる。
配布先の版に合わせて設定を調節するために,変換スクリプトに版を指定できるようにする。

*.cfg の -LU, *.dof の Packages= の設定 (deploy.txt)

5to6.rb
(fail to include c:/apollo/tmp/5to6.rb)

CLX への移行

LINUX への移植を考えると,VCL から CLX への移行が必要になる。
移植は基本的にはそれほど難しくない。
VCL に存在して CLX に存在しないクラスや関数,特に Windows 固有の機能を使っている場合は,同一の機能を別の方法で実装する。移植が難しければ機能削減が必要になる。
例えば,Apollo では FileCtrl unit を外し (警告が出るため),Variants unit を追加する (Variant を使うため) 必要があった。Windows 固有の機能は削除した。
author: YOSHIDA Kazuhiro
[ top ] [ prev ] [ up ] [ next ]