一直使用delphi7,毕竟多年收集的控件在高版本上会有各种问题,只是偶尔下载高版本主要处理64位及delphi乱码问题,更多的时候直接用vs编写delphi不好实现的功能,供delphi调用。因此对delphi版本很多时候很茫然 。最近看mORMot的代码,正好看到delhphi版本的判断,很直观了解delphi版本变化情况,记录下来。
function GetDelphiCompilerVersion: RawUTF8;
begin
result :=
{$ifdef FPC}
' '
{$ifdef VER2_6_4}+' 2.6.4'{$endif}
{$ifdef VER3_0_0}+' 3.0.0'{$endif}
{$ifdef VER3_0_1}+' 3.0.1'{$endif}
{$ifdef VER3_0_2}+' 3.0.2'{$endif}
{$ifdef VER3_1_1}+' 3.1.1'{$endif}
{$ifdef VER3_2}+' 3.2'{$endif}
{$ifdef VER3_3_1}+' 3.3.1'{$endif}
{$else}
{$ifdef VER130} 'Delphi 5'{$endif}
{$ifdef CONDITIONALEXPRESSIONS} // Delphi 6 or newer
{$if defined(KYLIX3)}'Kylix 3'
{$elseif defined(VER140)}'Delphi 6'
{$elseif defined(VER150)}'Delphi 7'
{$elseif defined(VER160)}'Delphi 8'
{$elseif defined(VER170)}'Delphi 2005'
{$elseif defined(VER185)}'Delphi 2007'
{$elseif defined(VER180)}'Delphi 2006'
{$elseif defined(VER200)}'Delphi 2009'
{$elseif defined(VER210)}'Delphi 2010'
{$elseif defined(VER220)}'Delphi XE'
{$elseif defined(VER230)}'Delphi XE2'
{$elseif defined(VER240)}'Delphi XE3'
{$elseif defined(VER250)}'Delphi XE4'
{$elseif defined(VER260)}'Delphi XE5'
{$elseif defined(VER265)}'AppMethod 1'
{$elseif defined(VER270)}'Delphi XE6'
{$elseif defined(VER280)}'Delphi XE7'
{$elseif defined(VER290)}'Delphi XE8'
{$elseif defined(VER300)}'Delphi 10 Seattle'
{$elseif defined(VER310)}'Delphi 10.1 Berlin'
{$elseif defined(VER320)}'Delphi 10.2 Tokyo'
{$elseif defined(VER330)}'Delphi 10.3 Rio'
{$elseif defined(VER340)}'Delphi 10.4 Next'
{$ifend}
{$endif CONDITIONALEXPRESSIONS}
{$endif FPC}
{$ifdef CPU64} +' 64 bit' {$else} +' 32 bit' {$endif}
end;