Delphiのコンパイラバージョン情報
42 DelphiCompilerVersion 動作確認 Delphi2007/Delphi2010 更新日 2009/12/29(火)

DELPHIにはコンパイラバージョンが
#DEFINEで定義されています。

各VersionのDelphiに対するコンパイラバージョン定義は
次の通り

Delphi1〜Delphi2010
C++Builder1〜C++Builder2010
に対応しています。

    Delphi1         VER80
    Delphi2         VER90
    C++Builder1     VER93
    Delphi3         VER100
    C++Builder3     VER110
    Delphi4         VER120
    C++Builder4     VER125
    Delphi5         VER130
    C++Builder5     VER130
    Delphi6         VER140
    C++Builder6     VER140
    Kylix 1/2/3     VER140
    Delphi7         VER150
    Delphi8         VER160
    Delphi2005      VER170
    BDS2006         VER180
    TurboDelphi     VER180
    TurboC++        VER180
    Delphi2007      VER185(VER180)
    C++Builder2007  VER185(VER180)
    Delphi2009      VER200
    C++Builder2009  VER200
    Delphi2010      VER210
    C++Builder2010  VER210

だから、例えばソース中に

    {$IFDEF VER170}
      ShowMessage('Delphi2005です');
    {$ENDIF}

と書くことによって、
Delphi2005のみメッセージが表示されるようにソースが書けます。

Delphi2007だけは、2006とコンパイラの言語仕様に変更がないため
VER180もVER185も定義されています。

Delphiのコンパイラバージョンを調べるプログラムを書いておきます。

────────────────────
program DelphiCompilerVerChk;

uses
  SysUtils, Windows;

{$R *.res}

{-------------------------------
//      文字列を追加する関数
機能:       StringAdd(S, 'メッセージ')
            とすると、改行で区切られてSにメッセージが追加される
            StringAdd(S, 'メッセージ' '/')
            とすると、『/』で区切られてメッセージが追加される
備考:       
履歴:       2009/08/28(金)
              作成
//--▼----------------------▽--}
procedure StringAdd(var OriginalText: String; 
  Const AddText: String; Const Separator: String = #13#10);
var
  i: Integer;
  LenOriginal, LenSeparator, LenAdd: Integer;
begin
  if OriginalText = '' then
  begin
    OriginalText := AddText;
  end else
  begin
    LenOriginal := Length(OriginalText);
    LenSeparator:= Length(Separator);
    LenAdd      := Length(AddText);
    SetLength(OriginalText, LenOriginal + LenSeparator + LenAdd);
    for i := 1 to LenSeparator do
    begin
      OriginalText[LenOriginal + i] := Separator[i];
    end;
    for i := 1 to LenAdd do
    begin
      OriginalText[LenOriginal + LenSeparator + i] := AddText[i];
    end;
  end;
end;
//--△----------------------▲--

var
  MsgStr: String;
begin
  MsgStr := 'Version不明';

{$IFDEF VER80}  MsgStr := 'Delphi1';                    {$ENDIF}

{$IFDEF VER90}  MsgStr := 'Delphi2';                    {$ENDIF}

{$IFDEF VER93}  MsgStr := 'C++Builder1';                {$ENDIF}

{$IFDEF VER100} MsgStr := 'Delphi3';                    {$ENDIF}

{$IFDEF VER110} MsgStr := 'C++Builder3';                {$ENDIF}

{$IFDEF VER120} MsgStr := 'Delphi4';                    {$ENDIF}

{$IFDEF VER125} MsgStr := 'C++Builder4';                {$ENDIF}

{$IFDEF VER130} MsgStr := 'Delphi5';                    {$ENDIF}
{$IFDEF VER130} StringAdd(MsgStr, 'C++Builder5');       {$ENDIF}

{$IFDEF VER140} MsgStr := 'Delphi6';                    {$ENDIF}
{$IFDEF VER140} StringAdd(MsgStr, 'C++Builder6');       {$ENDIF}
{$IFDEF VER140} StringAdd(MsgStr, 'Kylix/2/3');         {$ENDIF}

{$IFDEF VER150} MsgStr := 'Delphi7';                    {$ENDIF}

{$IFDEF VER160} MsgStr := 'Delphi8';                    {$ENDIF}

{$IFDEF VER170} MsgStr := 'Delphi2005';                 {$ENDIF}

{$IFDEF VER180} MsgStr := 'BDS 2006(Delphi/C++)';       {$ENDIF}
{$IFDEF VER180} StringAdd(MsgStr, 'Turbo Delphi/C++');  {$ENDIF}

{$IFDEF VER185} MsgStr := 'Delphi2007';                 {$ENDIF}
{$IFDEF VER185} StringAdd(MsgStr, 'C++Builder2007');    {$ENDIF}

{$IFDEF VER200} MsgStr := 'Delphi2009';                 {$ENDIF}
{$IFDEF VER200} StringAdd(MsgStr, 'C++Builder2009');    {$ENDIF}

{$IFDEF VER210} MsgStr := 'Delphi2010';                 {$ENDIF}
{$IFDEF VER210} StringAdd(MsgStr, 'C++Builder2010');    {$ENDIF}


  Windows.MessageBox(0,
    PChar(MsgStr),
    PChar(ExtractFileName(ParamStr(0))), MB_OK);

end.
────────────────────


参考────────────────────
Kylix Tips From Under The Hood(英語)
http://www.blong.com/Tips/KylixTips.htm

プログラムるコンポーネント部屋
http://okapony.hp.infoseek.co.jp/download/indexc.html#DVERSION

DelphiR 2007 for Win32 Enterprise / Professional に関するQ&A
http://dn.codegear.com/jp/article/34084
    Q:Delphi 2007 for Win32用に定義された新しいCOMPILERVERSION と
    RTLVERSIONの値は何ですか?
    A:Delphi 2007 for Win32では、言語仕様に変更を加えていないため、
    Delphi 2007 for Win32でも引き続きVER180が定義されています。プログラ
    マーの中では、新製品とそれ以外を区別する必要もあるでしょうから、Delphi
     2007 for Win32では、VER185も定義されています。

Delphi2010新バージョン
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200908/09080037.txt
    D2009 は VER200
    D2010 は VER210

コンパイラを識別するための定義済みシンボル
http://www2.big.or.jp/~osamu/Delphi/Tips/edit.cgi?file=0086.txt

異なるバージョンのDelphiでソースを共有する
http://homepage1.nifty.com/ht_deko/tech001.html#tech003