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
|