如何检测特定的Delphi构建?

Pat*_*kvL 2 delphi version-detection

这与另一个Delphi版本问题有关但仍然不同;

我正在寻找一种方法来检测编译我的代码的Delphi编译器的service-pack(或内部版本号).该jedi.inc是好的,但它并没有告诉我确切的版本.(我也不能在那里使用SUPPORTS_*定义,因为那些也与版本相关)

我需要这个,因为旧版本中存在一些错误(在这种情况下,它是Delphi 2009中_ValLong错误),这些错误已在以后的服务包中修复(在本例中为Delphi 2009 service pack 3).

目前我的代码中有各种检查,如下所示:

{$ IFDEF BUG_QC_68123}

但我不能在我的主要包含文件中说这个:

{$IFDEF DELPHI2009_UP}
  {$DEFINE BUG_QC_68123}
{$ENDIF}
Run Code Online (Sandbox Code Playgroud)

...因为这将错过D2009SP3及更高版本不再有此错误的事实.

有任何想法吗?

PS:这可能也适用于较旧的(和较新的)Delphi版本,因此任何图书馆和/或组件供应商也会对此感兴趣,我猜想.

Too*_*the 5

为每个版本定义了符号:

VER80 - Delphi 1
VER90 - Delphi 2
VER100 - Delphi 3
VER120 - Delphi 4
VER130 - Delphi 5
VER140 - Delphi 6
VER150 - Delphi 7
VER160 - Delphi 8
VER170 - Delphi 2005
VER180 - Delphi 2006
VER180 - Delphi 2007
VER185 - Delphi 2007 (Note: symbol VER185, for example, is used to indicate Delphi 2007 compiler or an earlier version.)
VER190 - Delphi 2007 for .NET
VER200 - C++ Builder 2009
VER210 - Delphi 2010
VER220 - Delphi XE
VER230 - Delphi XE2
VER240 - Delphi XE3
VER250 - Delphi XE4
VER260 - Delphi XE5
VER270 - Delphi XE6
VER280 - Delphi XE7
WIN32 - Indicates that the operating environment is the Win32 API.
LINUX - Indicates that the operating environment is Linux
MSWINDOWS - Indicates that the operating environment is the MS Windows/li] 
CONSOLE - Indicates that an application is being compiled as a console application
Run Code Online (Sandbox Code Playgroud)

来源 另一个来源 您无法检查不同的内部版本号.

对于好奇的VER10-VER70,其中turbo pascal版本和VER110是C++构建器版本.