//Advanced Delphi Systems Code: ads_DelphiVersion
{{Copyright(c)2017 Advanced Delphi Systems

 Richard Maley
  Advanced Delphi Systems
  12613 Maidens Bower Drive
  Potomac, MD 20854 USA
  phone 301-840-1554
  dickmaley@advdelphisys.com

  The code herein can be used or modified by anyone.  Please retain references
  to Richard Maley at Advanced Delphi Systems.  If you make improvements to the
  code please send your improvements to dickmaley@advdelphisys.com so that the
  entire Delphi community can benefit.  All comments are welcome.
}
unit ads_DelphiVersion;

(*
UnitIndex Master Index Implementation Section Download Units
Description: ads_DelphiVersion.pas
This unit contains the following routines.

GetCompilerConditional  GetPackageVersion   GetProductName   GetProductVersion  

*)
interface

Function GetProductVersion(): String;
Function GetPackageVersion(): String;
Function GetProductName(): String;
Function GetCompilerConditional(): String;



implementation

Type
  TDelphiVersion=record
    ProductVersion: String;
    PackageVersion: String;
    ProductName: String;
    CompilerConditional: String;
  End;
Var
  DelphiVersion : Array of TDelphiVersion;

(*
Delphi conditional VER	Product	Product Version	Package Version
VER300
Delphi Seattle / C++Builder Seattle 
(Delphi:Win32/Win64/OSX/iOS32/iOS64/Android) (C++Builder:Win32/Win64/OSX/iOS32/iOS64/Android)
23
230
VER290
Delphi XE8 / C++Builder XE8 
(Delphi:Win32/Win64/OSX/iOS32/iOS64/Android) (C++Builder:Win32/Win64/OSX/iOS32/iOS64/Android)
22
220
VER280
Delphi XE7 / C++Builder XE7 
(Delphi:Win32/Win64/OSX/iOS/Android) (C++Builder:Win32/Win64/OSX/iOS/Android)
21
210
VER270
Delphi XE6 / C++Builder XE6 
(Delphi:Win32/Win64/OSX/iOS/Android) (C++Builder:Win32/Win64/OSX/iOS/Android)
20
200
VER260
Delphi XE5 / C++Builder XE5 
(Delphi:Win32/Win64/OSX/iOS/Android) (C++Builder:Win32/Win64/OSX/iOS)
19
190
VER250
Delphi XE4 / C++Builder XE4 
(Delphi:Win32/Win64/OSX/iOS) (C++Builder:Win32/Win64/OSX)
18
180
VER240
Delphi XE3 / C++Builder XE3 
(Delphi:Win32/Win64/OSX) (C++Builder:Win32/Win64/OSX)
17
170
VER230
Delphi XE2 / C++Builder XE2 
(Delphi:Win32/Win64/OSX) (C++Builder:Win32/OSX)
16
160
161 is the version for the five FireMonkey packages at XE2 Update 2: 
fmi161.bpl, fmx161.bpl, fmxase161.bpl, fmxdae161.bpl, and fmxobj161.bpl.
VER220
Delphi XE / C++Builder XE (Win32)
15
150
VER210
Delphi 2010 / C++Builder 2010 (Win32)
14
140
VER200
Delphi 2009 / C++Builder 2009 (Win32)
12
120
VER190
Delphi 2007 for .Net *
11
110
VER180 or VER185
Delphi 2007 / C++Builder 2007 for Win32 * 
11
110
VER180
Delphi 2006 / C++Builder 2006 (Win32/.Net) and Delphi/C++Builder 2007 for Win32
10
100
VER170
Delphi 2005 (Win32/.Net)
9
90
VER160
Delphi 8 for .Net
8
80
VER150
Delphi 7 (and 7.1)
7
70
VER140
Delphi 6 / C++Builder 6
6
60
VER130
Delphi 5 / C++Builder 5
5
NA
VER125
C++Builder 4
4
NA
VER120
Delphi 4
4
NA
VER110
C++Builder 3
3
NA
VER100
Delphi 3
3
NA
VER93
C++Builder 1
NA
NA
VER90
Delphi 2
2
NA
VER80
Delphi 1
1
NA





*)


//
Unit Description UnitIndex Master Index
Function GetProductVersion(): String;
Begin
  Result:='';
  {$IFDEF VER300} Result:= '23';Exit;{$ENDIF}
  {$IFDEF VER290} Result:= '22';Exit;{$ENDIF}
  {$IFDEF VER280} Result:= '21';Exit;{$ENDIF}
  {$IFDEF VER270} Result:= '20';Exit;{$ENDIF}
  {$IFDEF VER260} Result:= '19';Exit;{$ENDIF}
  {$IFDEF VER250} Result:= '18';Exit;{$ENDIF}
  {$IFDEF VER240} Result:= '17';Exit;{$ENDIF}
  {$IFDEF VER230} Result:= '16';Exit;{$ENDIF}
  {$IFDEF VER220} Result:= '15';Exit;{$ENDIF}
  {$IFDEF VER210} Result:= '14';Exit;{$ENDIF}
  {$IFDEF VER200} Result:= '12';Exit;{$ENDIF}
  {$IFDEF VER190} Result:= '11';Exit;{$ENDIF}
  {$IFDEF VER185} Result:= '11';Exit;{$ENDIF}
  {$IFDEF VER180} Result:= '10';Exit;{$ENDIF}
  {$IFDEF VER170} Result:= '9' ;Exit;{$ENDIF}
  {$IFDEF VER160} Result:= '8' ;Exit;{$ENDIF}
  {$IFDEF VER150} Result:= '7' ;Exit;{$ENDIF}
  {$IFDEF VER140} Result:= '6' ;Exit;{$ENDIF}
  {$IFDEF VER130} Result:= '5' ;Exit;{$ENDIF}
  {$IFDEF VER125} Result:= '4' ;Exit;{$ENDIF}
  {$IFDEF VER120} Result:= '4' ;Exit;{$ENDIF}
  {$IFDEF VER110} Result:= '3' ;Exit;{$ENDIF}
  {$IFDEF VER100} Result:= '3' ;Exit;{$ENDIF}
  {$IFDEF VER93}  Result:= 'NA';Exit;{$ENDIF}
  {$IFDEF VER90}  Result:= '2' ;Exit;{$ENDIF}
  {$IFDEF VER80}  Result:= '1' ;Exit;{$ENDIF}
End;

//
Unit Description UnitIndex Master Index
Function GetPackageVersion(): String;
Begin
  Result:='';
  {$IFDEF VER300} Result:= '230';Exit;{$ENDIF}
  {$IFDEF VER290} Result:= '220';Exit;{$ENDIF}
  {$IFDEF VER280} Result:= '210';Exit;{$ENDIF}
  {$IFDEF VER270} Result:= '200';Exit;{$ENDIF}
  {$IFDEF VER260} Result:= '190';Exit;{$ENDIF}
  {$IFDEF VER250} Result:= '180';Exit;{$ENDIF}
  {$IFDEF VER240} Result:= '170';Exit;{$ENDIF}
  {$IFDEF VER230} Result:= '160';Exit;{$ENDIF}
  {$IFDEF VER220} Result:= '150';Exit;{$ENDIF}
  {$IFDEF VER210} Result:= '140';Exit;{$ENDIF}
  {$IFDEF VER200} Result:= '120';Exit;{$ENDIF}
  {$IFDEF VER190} Result:= '110';Exit;{$ENDIF}
  {$IFDEF VER185} Result:= '110';Exit;{$ENDIF}
  {$IFDEF VER180} Result:= '100';Exit;{$ENDIF}
  {$IFDEF VER170} Result:= '90' ;Exit;{$ENDIF}
  {$IFDEF VER160} Result:= '80' ;Exit;{$ENDIF}
  {$IFDEF VER150} Result:= '70' ;Exit;{$ENDIF}
  {$IFDEF VER140} Result:= '60' ;Exit;{$ENDIF}
  {$IFDEF VER130} Result:= 'NA' ;Exit;{$ENDIF}
  {$IFDEF VER125} Result:= 'NA' ;Exit;{$ENDIF}
  {$IFDEF VER120} Result:= 'NA' ;Exit;{$ENDIF}
  {$IFDEF VER110} Result:= 'NA' ;Exit;{$ENDIF}
  {$IFDEF VER100} Result:= 'NA' ;Exit;{$ENDIF}
  {$IFDEF VER93}  Result:= 'NA' ;Exit;{$ENDIF}
  {$IFDEF VER90}  Result:= 'NA' ;Exit;{$ENDIF}
  {$IFDEF VER80}  Result:= 'NA' ;Exit;{$ENDIF}
End;

//
Unit Description UnitIndex Master Index
Function GetCompilerConditional(): String;
Begin
  Result:='';
  {$IFDEF VER300} Result:= 'VER300';Exit;{$ENDIF}
  {$IFDEF VER290} Result:= 'VER290';Exit;{$ENDIF}
  {$IFDEF VER280} Result:= 'VER280';Exit;{$ENDIF}
  {$IFDEF VER270} Result:= 'VER270';Exit;{$ENDIF}
  {$IFDEF VER260} Result:= 'VER260';Exit;{$ENDIF}
  {$IFDEF VER250} Result:= 'VER250';Exit;{$ENDIF}
  {$IFDEF VER240} Result:= 'VER240';Exit;{$ENDIF}
  {$IFDEF VER230} Result:= 'VER230';Exit;{$ENDIF}
  {$IFDEF VER220} Result:= 'VER220';Exit;{$ENDIF}
  {$IFDEF VER210} Result:= 'VER210';Exit;{$ENDIF}
  {$IFDEF VER200} Result:= 'VER200';Exit;{$ENDIF}
  {$IFDEF VER190} Result:= 'VER190';Exit;{$ENDIF}
  {$IFDEF VER185} Result:= 'VER185';Exit;{$ENDIF}
  {$IFDEF VER180} Result:= 'VER180';Exit;{$ENDIF}
  {$IFDEF VER170} Result:= 'VER170';Exit;{$ENDIF}
  {$IFDEF VER160} Result:= 'VER160';Exit;{$ENDIF}
  {$IFDEF VER150} Result:= 'VER150';Exit;{$ENDIF}
  {$IFDEF VER140} Result:= 'VER140';Exit;{$ENDIF}
  {$IFDEF VER130} Result:= 'VER130';Exit;{$ENDIF}
  {$IFDEF VER125} Result:= 'VER125';Exit;{$ENDIF}
  {$IFDEF VER120} Result:= 'VER120';Exit;{$ENDIF}
  {$IFDEF VER110} Result:= 'VER110';Exit;{$ENDIF}
  {$IFDEF VER100} Result:= 'VER100';Exit;{$ENDIF}
  {$IFDEF VER93}  Result:= 'VER93'; Exit;{$ENDIF}
  {$IFDEF VER90}  Result:= 'VER90'; Exit;{$ENDIF}
  {$IFDEF VER80}  Result:= 'VER80'; Exit;{$ENDIF}
End;

//
Unit Description UnitIndex Master Index
Function GetProductName(): String;
Begin
  Result:='';
  {$IFDEF VER300} Result:= 'Delphi Seattle'; Exit;{$ENDIF}
  {$IFDEF VER290} Result:= 'Delphi XE8'; Exit;{$ENDIF}
  {$IFDEF VER280} Result:= 'Delphi XE7'; Exit;{$ENDIF}
  {$IFDEF VER270} Result:= 'Delphi XE6'; Exit;{$ENDIF}
  {$IFDEF VER260} Result:= 'Delphi XE5'; Exit;{$ENDIF}
  {$IFDEF VER250} Result:= 'Delphi XE4'; Exit;{$ENDIF}
  {$IFDEF VER240} Result:= 'Delphi XE3'; Exit;{$ENDIF}
  {$IFDEF VER230} Result:= 'Delphi XE2'; Exit;{$ENDIF}
  {$IFDEF VER220} Result:= 'Delphi XE'; Exit;{$ENDIF}
  {$IFDEF VER210} Result:= 'Delphi 2010'; Exit;{$ENDIF}
  {$IFDEF VER200} Result:= 'Delphi 2009'; Exit;{$ENDIF}
  {$IFDEF VER190} Result:= 'Delphi 2007 for .Net'; Exit;{$ENDIF}
  {$IFDEF VER185} Result:= 'Delphi 2007'; Exit;{$ENDIF}
  {$IFDEF VER180} Result:= 'Delphi 2006'; Exit;{$ENDIF}
  {$IFDEF VER170} Result:= 'Delphi 2005'; Exit;{$ENDIF}
  {$IFDEF VER160} Result:= 'Delphi 8'; Exit;{$ENDIF}
  {$IFDEF VER150} Result:= 'Delphi 7'; Exit;{$ENDIF}
  {$IFDEF VER140} Result:= 'Delphi 6'; Exit;{$ENDIF}
  {$IFDEF VER130} Result:= 'Delphi 5'; Exit;{$ENDIF}
  {$IFDEF VER125} Result:= 'C++Builder 4'; Exit;{$ENDIF}
  {$IFDEF VER120} Result:= 'Delphi 4'; Exit;{$ENDIF}
  {$IFDEF VER110} Result:= 'C++Builder 3'; Exit;{$ENDIF}
  {$IFDEF VER100} Result:= 'Delphi 3'; Exit;{$ENDIF}
  {$IFDEF VER93}  Result:= 'C++Builder 1'; Exit;{$ENDIF}
  {$IFDEF VER90}  Result:= 'Delphi 2'; Exit;{$ENDIF}
  {$IFDEF VER80}  Result:= 'Delphi 1'; Exit;{$ENDIF}
End;

Initialization

Finalization

end.


//