Delphi Tips 
-----------------------------

0086  D1   D2   D3   D4   D5   D6   D7   3.1   95   98    作成: 1999/02/08 osamu rev 1.7
   B1   B3   B4   B5   B6   B7   NT3   NT4   2K   XP  更新: 2004/03/04 osamu 編集
コンパイラを識別するための定義済みシンボル

Pascal コンパイラの バージョン識別子です。
  http://3932.rapidforum.com/topic=100288647371
  http://www.adug.org.au/Reference/VersionSymbols.htm
  http://www.blong.com/Tips/KylixTips.htm
及び[Delphi-ML:67458]より。

Compiler                  Symbol   System  Symbol   BCB?
Turbo Pascal 4            Ver40    DOS       -
Turbo Pascal 5.0          Ver50    DOS       -
Turbo Pascal 5.5          Ver55    DOS       -
Turbo Pascal 6.0          Ver60    DOS       -
Turbo Pascal for Win 1.0  Ver10    Win16    ???
Turbo Pascal for Win 1.5  Ver15    Win16    ???
Borland Pascal 7          Ver70    ???      ???
Delphi 1.0                Ver80    Win16   Windows
Delphi 2.0x               Ver90    Win32   Win32
C++ Builder 1             Ver93    Win32   Win32    BCB
Delphi 3                  Ver100   Win32   Win32
C++ Builder 3             Ver110   Win32   Win32    BCB
Delphi 4                  Ver120   Win32   Win32
C++ Builder 4             Ver125   Win32   Win32    BCB
Delphi 5                  Ver130   Win32   Win32
C++ Builder 5             Ver130   Win32   Win32    BCB
Kylix1                    Ver140   Linux   LINUX
Delphi 6                  Ver140   Win32   Win32
C++ Builder 6             Ver140   Win32   Win32    BCB
Kylix2                    Ver140   Linux   LINUX

その他、CPU386、LINUX32、POSIX(32)、PIC、ELF なども状況により利用可能です。


また、Kylix からは不等号を使った条件分岐ができます。
条件コンパイルするには、[Delphi-ML:67458], [Delphi-ML:67474], [Delphi-ML:67489] を参考にして、

{$IFDEF VER80}  {Delphi1}  {$ENDIF}
{$IFDEF VER90}  {Delphi2}  {$ENDIF}
{$IFDEF VER93}  {Builder1} {$ENDIF}
{$IFDEF VER100} {Delphi3}  {$ENDIF}  
{$IFDEF VER110} {Builder3} {$ENDIF}
{$IFDEF VER120} {Delphi4}  {$ENDIF}  
{$IFDEF VER125} {Builder4} {$ENDIF}
{$IFDEF VER130}
  {$IFDEF BCB}  {Builder5}
  {$ELSE}       {Delphi5}  {$ENDIF}
{$ENDIF}
{$IFDEF CONDITIONALEXPRESSIONS}
  // Kylix1 以上は RTLVersion を持っているので
  {$IF RTLVersion < 14.20 - 0.001}
      // こういう形で処理できる
      // "- 0.001" の部分は2進小数と10進小数との変換誤差を
      // 吸収するためのダミー定数 → [Delphi-ML:67489] を参照
  {$IFEND}
  {$IF Declared(CompilerVersion)}
      // Delphi6 以上では CompilerVersion も利用可能
      {$IF CompilerVersion < 14.10 - 0.001}
        // Kylix1 から Builder6 までに対する処理
      {$IFEND}
  {$IFEND}
{$ENDIF}  

などとします。
ちなみに、中村さんの [Delphi-ML:67486] によれば、

                          RTLVersion  CompilerVersion
Kylix1                    14.00       なし
Delphi6             14.10       14.01
Delphi6     Update Pack 1 14.11       14.01
Delphi6     Update Pack 2 14.20       14.01
C++Builder6               14.20       14.01
Kylix 2                   14.20    14.10

とのことですが、Nobuyuki Nakashima さんの [Delphi-ML:67489] によれば、2進小数と10進小数との変換誤差で、上記の値ぴったりにはなりません。コード例のように、誤差を考慮した対処が必要です。

http://www.delphianworld.com/direct.html?id=MI0062
のようなインクルードファイルを用意すると楽ができます。
参照: [builder:5430] [Delphi-ML:57660] [Delphi-ML:67458] [Delphi-ML:67474] [Delphi-ML:67486] [Delphi-ML:67489] <開発環境>

[新規作成] [最新の情報に更新]

How To
Lounge
KeyWords


Tips
Delphi
Home
Osamu Takeuchi osamu@big.or.jp