Why is the version numbering scheme so chaotic in Delphi?

Hello all,

What I find especially displeasing about Delphi is the horribly chaotic way how the product is identified internally.

For example, The product "Delphi XE" is stored on my hard drive in the directory "C:\Program files\Embarcadero\Rad Studio\8.0".

This would very much suggest it is version 8 of the product, does it not?. But it is not. 

In order to identify the product in my source code using conditional compilation, I must use awkward directives like  {$ifdef VER220} , {$if compilerversion = 15.0} or {$IF Rtlversion = 15.0}.  To make matters even more complicated, if I start the DCC32 compiler on the command line it tells me it has version 22 !


To confuse everything even more, some component manufacturers choose to name their packages with names like "Indy160.groupproj" or use batch files like "FullD12.bat". Most of the time I have absolutely no idea which Delphi version they mean !!! In such cases I have to try out the packages one by one until I find one that compiles.

IMO, Delphi's version numbering scheme is unnecessarily chaotic, is costing me substantial time and potentially introduces errors. 

<End of rant...>
0
Arthur
9/5/2013 1:42:32 PM
embarcadero.delphi.non-tech 5933 articles. 1 followers. Follow

28 Replies
693 Views

Similar Articles

[PageSpeed] 39

Arthur Hoornweg wrote:

> In order to identify the product in my source code using conditional compilation, I must use awkward directives like
> {$ifdef VER220} , {$if compilerversion = 15.0} or {$IF Rtlversion = 15.0}.  To make matters even more complicated, if
> I start the DCC32 compiler on the command line it tells me it has version 22 !

DCC32 reports the same version as the corresponding directive, i.e. {$if compilerversion = 22.0} (not 15.0).

> To confuse everything even more, some component manufacturers choose to name their packages with names like
> "Indy160.groupproj" or use batch files like "FullD12.bat". Most of the time I have absolutely no idea which Delphi
> version they mean !!! In such cases I have to try out the packages one by one until I find one that compiles.

EMBT doesn't have any control over what third parties name their files.

-- 
Dave Nottage [TeamB]
0
Dave
9/5/2013 2:04:15 PM
Dave Nottage wrote:

> EMBT doesn't have any control over what third parties name their
> files.

The point being that "FullD12.bat" presumably refers to Delphi V12, but
which Delphi is that?

-- 
SteveT
0
Steve
9/5/2013 2:32:04 PM
Steve Thackery wrote:
> Dave Nottage wrote:
>
>> EMBT doesn't have any control over what third parties name their
>> files.
>
> The point being that "FullD12.bat" presumably refers to Delphi V12, but
> which Delphi is that?

The fifth after D7

D7
D8
D9 (BDS2005)
D10 (BDS2006)
D11 (BDS2007)
D12 (RS2009)
D14 (RS2010)
D15 (RSXE)
D16 (RSXE2)
D17 (RSXE3)
D18 (RSXE4)

Have a look at project jedi's include file for those definitions (and a 
few others):

https://github.com/project-jedi/jedi/blob/master/jedi.inc
0
Olivier
9/5/2013 2:37:48 PM
> {quote:title=Olivier Sannier wrote:}{quote}
> Steve Thackery wrote:
> > The point being that "FullD12.bat" presumably refers to Delphi V12, but
> > which Delphi is that?
> 
> The fifth after D7
> 
> D7
> D8
> D9 (BDS2005)
> D10 (BDS2006)
> D11 (BDS2007)
> D12 (RS2009)
> D14 (RS2010)
> D15 (RSXE)
> D16 (RSXE2)
> D17 (RSXE3)
> D18 (RSXE4)
> 
> Have a look at project jedi's include file for those definitions (and a 
> few others):
> 
> https://github.com/project-jedi/jedi/blob/master/jedi.inc

Good you guys moved to a DVCS!

Are you accepting pull requests?

BTW: The above list is precicesly why I started http://stackoverflow.com/questions/18185156/collecting-a-list-table-of-version-specific-information-for-rad-studio-delphi-c

Got the some of the SO community angry because of it, but didn't know of a better somewhat publicly editable place) where to put this.  (the DocWiki is still more or less read-only, and getting changes there is a bit of a cumbersome process).

--jeroen
0
Jeroen
9/5/2013 2:56:29 PM
Steve Thackery wrote:

> but which Delphi is that?

Delphi 8
Delphi 9 aka 2005
Delphi 10 aka 2006
Delphi 11 aka 2007
Delphi 12 aka 2009
Delphi 13 aka "we aren't superstitious but there is no 13th floor" 
Delphi 14 aka 2010
Delphi 15 aka XE
Delphi 16 aka XE2
Delphi 17 aka XE3
Delphi 18 aka XE4
(Delphi 19 aka XE5)

If they wouldn't have switched to year numbers and then XEx versioning
then "Delphi 12" would have been much more common like "Delphi 7" is.

Then you have the compiler who's versioning started with TurboPascal,
so Delphi 1 had DCC 8.0 (VER80..VER250, CompilerVersion=8.0 .. 25.0)
There is even VER130/CompilerVersion=13.0 (Delphi 5), thus the person
in charge at that time wasn't superstitious.


-- 
Andreas Hausladen
0
Andreas
9/5/2013 2:57:12 PM
> {quote:title=Arthur Hoornweg wrote:}{quote}
> Hello all,
> 
> What I find especially displeasing about Delphi is the horribly chaotic way how the product is identified internally.
> 
> For example, The product "Delphi XE" is stored on my hard drive in the directory "C:\Program files\Embarcadero\Rad Studio\8.0".
> 
> This would very much suggest it is version 8 of the product, does it not?. But it is not. 
> 
> In order to identify the product in my source code using conditional compilation, I must use awkward directives like  {$ifdef VER220} , {$if compilerversion = 15.0} or {$IF Rtlversion = 15.0}.  To make matters even more complicated, if I start the DCC32 compiler on the command line it tells me it has version 22 !
> 

Or use an include file of a well maintained Delphi open source project that figures out those values for you (;

Hint: look at JVCL and JCL for their .inc files.

The confusion you describe is one of the reasons I started this SO question:
http://stackoverflow.com/questions/18185156/collecting-a-list-table-of-version-specific-information-for-rad-studio-delphi-c
and wrote this PowerShell script:
https://bitbucket.org/jeroenp/besharp.net/src/tip/Native/Delphi/Scripts/List-Delphi-Installed-Packages.ps1

--jeroen
0
Jeroen
9/5/2013 3:04:07 PM
On 9/5/2013 9:56 AM, Jeroen Pluimers wrote:
> Got the some of the SO community angry because of it, but didn't know of a better somewhat publicly editable place) where to put this.

http://www.delphi.wikia.com/

-- 
Craig Peterson
Scooter Software
0
Craig
9/5/2013 3:34:55 PM
On 9/5/13 5:57 PM, Andreas Hausladen wrote:
> Steve Thackery wrote:
>
>> but which Delphi is that?
>
> Delphi 8
> Delphi 9 aka 2005
> Delphi 10 aka 2006
> Delphi 11 aka 2007
> Delphi 12 aka 2009
> Delphi 13 aka "we aren't superstitious but there is no 13th floor"
> Delphi 14 aka 2010
> Delphi 15 aka XE
> Delphi 16 aka XE2
> Delphi 17 aka XE3
> Delphi 18 aka XE4
> (Delphi 19 aka XE5)
>
> If they wouldn't have switched to year numbers and then XEx versioning
> then "Delphi 12" would have been much more common like "Delphi 7" is.
>
> Then you have the compiler who's versioning started with TurboPascal,
> so Delphi 1 had DCC 8.0 (VER80..VER250, CompilerVersion=8.0 .. 25.0)
> There is even VER130/CompilerVersion=13.0 (Delphi 5), thus the person
> in charge at that time wasn't superstitious.

I was quite happy at the time they decided to skip version 13. All my 
scripts related to the build process had to be tweaked to skip that as 
well.

The scripts do the conversions between the Delphi version and BDS 
version numbers (related to actually building the app, registering the 
dpks in the setup, registering the help, etc) - and then finally the 
installer needs to map the version against the product names to keep the 
installer packages recognizable.

Of course, every now and then the component registration and help system 
has been changed and nowadays I just hope they won't invent a new help 
system (although Help 2 is what it is), etc.

Actually since XE things have been wonderfully stabilized... Also our 
actual development has stalled. <g>
0
Jouni
9/5/2013 3:38:28 PM
Jeroen Pluimers wrote:
>> {quote:title=Olivier Sannier wrote:}{quote}
>> Steve Thackery wrote:
>>> The point being that "FullD12.bat" presumably refers to Delphi V12, but
>>> which Delphi is that?
>>
>> The fifth after D7
>>
>> D7
>> D8
>> D9 (BDS2005)
>> D10 (BDS2006)
>> D11 (BDS2007)
>> D12 (RS2009)
>> D14 (RS2010)
>> D15 (RSXE)
>> D16 (RSXE2)
>> D17 (RSXE3)
>> D18 (RSXE4)
>>
>> Have a look at project jedi's include file for those definitions (and a
>> few others):
>>
>> https://github.com/project-jedi/jedi/blob/master/jedi.inc
>
> Good you guys moved to a DVCS!
>
> Are you accepting pull requests?

Of course we are, the move was made to make it easier for users to 
contribute back to the project.
0
Olivier
9/5/2013 3:44:23 PM
Andreas Hausladen wrote:

> Steve Thackery wrote:
> 
> > but which Delphi is that?
> 
> Delphi 8
> Delphi 9 aka 2005
> Delphi 10 aka 2006
> Delphi 11 aka 2007
> Delphi 12 aka 2009
> Delphi 13 aka "we aren't superstitious but there is no 13th floor" 
> Delphi 14 aka 2010
> Delphi 15 aka XE
> Delphi 16 aka XE2
> Delphi 17 aka XE3
> Delphi 18 aka XE4
> (Delphi 19 aka XE5)
> 
> If they wouldn't have switched to year numbers and then XEx versioning
> then "Delphi 12" would have been much more common like "Delphi 7" is.

This numbering is also used for the Delphi packages, which I presume is
the main reason why most 3rd party component packages use it too. The
vcl packages in e.g. Delphi XE4 have a 180 suffix, etc.
0
Utf
9/5/2013 4:15:44 PM
Dave wrote:

> EMBT doesn't have any control over what third parties name
> their files.

No, but third-parties do tend to follow Embarcadero's own naming schemes. 
 In the case of Indy's .bat files, it does make sense to rename them to more 
sensible names.  But the package filenames follow the IDE's naming scheme 
for its own packages.

--
Remy Lebeau (TeamB)
0
Remy
9/5/2013 4:51:50 PM
> {quote:title=Dave Nottage wrote:}{quote}

> EMBT doesn't have any control over what third parties name their files.

Sure it does. Simply develop and publish a formal naming scheme, call it a "standard", and ask that everyone use it. It's not uncommon in other development products. It's no different than the notion of a style guide really. You can't directly *enforce* it, but it's a lot better than none simply existing at all. It also creates pressures as customers of non-compliant products will specifically be able to ask why the product doesn't conform to "Standard X" rather than complain in general about naming issue
s. It'll also become an easy-to-identify feature on a feature matrix with a formal standard and name, and create similar competitive pressures to be compliant with it.
0
Joseph
9/5/2013 8:59:48 PM
Joseph Mitzen wrote:

> > {quote:title=Dave Nottage wrote:}{quote}
> 
> > EMBT doesn't have any control over what third parties name their
> > files.
> 
> Sure it does. Simply develop and publish a formal naming scheme, call
> it a "standard", and ask that everyone use it.

There is such a de facto standard, namely the package suffix scheme
used by Embarcadero itself.
0
Utf
9/6/2013 5:24:43 AM
Arthur Hoornweg wrote:

> For example, The product "Delphi XE" is stored on my hard drive in
> the directory "C:\Program files\Embarcadero\Rad Studio\8.0".
> 
> This would very much suggest it is version 8 of the product, does it
> not?. But it is not.

It is version 8 of the current IDE:

  C#Builder -> 1
  Delphi 8 -> 2
  Delphi 2005 -> 3
  Delphi 2006 -> 4
  Delphi 2007 -> 5
  Delphi 2009 -> 6
  Delphi 2010 -> 7
  Delphi XE -> 8

-- 
Rudy Velthuis (TeamB)    http://www.teamb.com

"I've finally learned what "upward compatible" means. It means
 we get to keep all our old mistakes." -- Dennie van Tassel
0
Rudy
9/6/2013 8:57:24 AM
> DCC32 reports the same version as the corresponding directive, i.e. {$if compilerversion = 22.0} (not 15.0).


Now you confuse me even more. Look at this site : http://docwiki.embarcadero.com/RADStudio/XE3/en/Compiler_Versions , it states that XE has product version 15 !
0
Arthur
9/6/2013 9:51:26 AM
> {quote:title=Arthur Hoornweg wrote:}{quote}
> Now you confuse me even more. Look at this site : http://docwiki.embarcadero.com/RADStudio/XE3/en/Compiler_Versions , it states that XE has product version 15 !

Product Version <> Compiler Version.
Delphi 15 <> DCC 22.0


--
Andreas Hausladen
0
Andreas
9/6/2013 10:50:24 AM
> {quote:title=Olivier Sannier wrote:}{quote}
> Jeroen Pluimers wrote:
> >> {quote:title=Olivier Sannier wrote:}{quote}
> >> https://github.com/project-jedi/jedi/blob/master/jedi.inc
> >
> > Good you guys moved to a DVCS!
> >
> > Are you accepting pull requests?
> 
> Of course we are, the move was made to make it easier for users to 
> contribute back to the project.

Thanks a million!

--jeroen
0
Jeroen
9/6/2013 12:20:21 PM
On 9/6/13 11:57 AM, Rudy Velthuis (TeamB) wrote:
> Arthur Hoornweg wrote:
>
>> For example, The product "Delphi XE" is stored on my hard drive in
>> the directory "C:\Program files\Embarcadero\Rad Studio\8.0".
>>
>> This would very much suggest it is version 8 of the product, does it
>> not?. But it is not.
>
> It is version 8 of the current IDE:
>
>    C#Builder -> 1
>    Delphi 8 -> 2
>    Delphi 2005 -> 3
>    Delphi 2006 -> 4
>    Delphi 2007 -> 5
>    Delphi 2009 -> 6
>    Delphi 2010 -> 7
>    Delphi XE -> 8
>

And in the registry, the key is

Software/(Borland|CodeGear|Embarcadero)/BDS/<Version>.0

So it's still Borland Developer Studio :)
0
Jouni
9/6/2013 4:15:23 PM
Jouni Aro wrote:

> > It is version 8 of the current IDE:
> > 
> >    C#Builder -> 1
> >    Delphi 8 -> 2
> >    Delphi 2005 -> 3
> >    Delphi 2006 -> 4
> >    Delphi 2007 -> 5
> >    Delphi 2009 -> 6
> >    Delphi 2010 -> 7
> >    Delphi XE -> 8
> > 
> 
> And in the registry, the key is
> 
> Software/(Borland|CodeGear|Embarcadero)/BDS/<Version>.0
> 
> So it's still Borland Developer Studio :)

Yes, at least in the registry. <g>

-- 
Rudy Velthuis (TeamB)    http://www.teamb.com

"Technology is dominated by two types of people: Those who
 understand what they do not manage. Those who manage what they
 do not understand." -- Putt's Law
0
Rudy
9/7/2013 12:04:45 PM
Rudy Velthuis (TeamB) wrote:

> Jouni Aro wrote:
> 
> > > It is version 8 of the current IDE:
> > > 
> > >    C#Builder -> 1
> > >    Delphi 8 -> 2
> > >    Delphi 2005 -> 3
> > >    Delphi 2006 -> 4
> > >    Delphi 2007 -> 5
> > >    Delphi 2009 -> 6
> > >    Delphi 2010 -> 7
> > >    Delphi XE -> 8
> > > 
> > 
> > And in the registry, the key is
> > 
> > Software/(Borland|CodeGear|Embarcadero)/BDS/<Version>.0
> > 
> > So it's still Borland Developer Studio :)
> 
> Yes, at least in the registry. <g>

Oh, and the actual IDE executable is still called bds.exe.

-- 
Rudy Velthuis (TeamB)    http://www.teamb.com

"Conservative politics is about simple solutions to complex problems,
which usually involve pinning all the blame on someone else. It doesn't
matter whether they make any sense - they can be explained in several
words, and sound best when yelled."
 -- Michael Warner in borland.public.off-topic
0
Rudy
9/7/2013 12:20:30 PM
Andreas Hausladen wrote:

> Steve Thackery wrote:
> 
> > but which Delphi is that?
> 
> Delphi 8
> Delphi 9 aka 2005
> Delphi 10 aka 2006
> Delphi 11 aka 2007
> Delphi 12 aka 2009
> Delphi 13 aka "we aren't superstitious but there is no 13th floor" 
> Delphi 14 aka 2010
> Delphi 15 aka XE
> Delphi 16 aka XE2
> Delphi 17 aka XE3
> Delphi 18 aka XE4
> (Delphi 19 aka XE5)
> 
> If they wouldn't have switched to year numbers and then XEx versioning
> then "Delphi 12" would have been much more common like "Delphi 7" is.
> 
> Then you have the compiler who's versioning started with TurboPascal,
> so Delphi 1 had DCC 8.0 (VER80..VER250, CompilerVersion=8.0 .. 25.0)
> There is even VER130/CompilerVersion=13.0 (Delphi 5), thus the person
> in charge at that time wasn't superstitious.

I'm not so sure it is the person in charge who has to be superstituous,
just like hotel owners are not necessarily superstitious, but their
cutsomers might be and may not buy a product with version 13 or book a
hotel room on floor 13, or take place in an airplaine row 13 (although
some airlines do have such a row).
-- 
Rudy Velthuis (TeamB)    http://www.teamb.com

"The same people that wrote the bible thought the world was
 flat."
 -- Unknown - (disputed)
0
Rudy
9/7/2013 12:24:05 PM
Am 07.09.2013 14:24, schrieb Rudy Velthuis (TeamB):

>>
>> Then you have the compiler who's versioning started with TurboPascal,
>> so Delphi 1 had DCC 8.0 (VER80..VER250, CompilerVersion=8.0 .. 25.0)
>> There is even VER130/CompilerVersion=13.0 (Delphi 5), thus the person
>> in charge at that time wasn't superstitious.
> 
> I'm not so sure it is the person in charge who has to be superstituous,
> just like hotel owners are not necessarily superstitious, but their
> cutsomers might be and may not buy a product with version 13 or book a
> hotel room on floor 13, or take place in an airplaine row 13 (although
> some airlines do have such a row).
> 

Afaik in different cultures different sumbers are considered to have
"bad carma". So we might end up banishing say all numbers below 20 or so
if we research enough different cultures ;-)

Greetings

Markus
0
Markus
9/7/2013 1:32:51 PM
Rudy Velthuis (TeamB) wrote:

> I'm not so sure it is the person in charge who has to be
> superstituous, just like hotel owners are not necessarily
> superstitious, but their cutsomers might be and may not buy a product
> with version 13 or book a hotel room on floor 13, or take place in an
> airplaine row 13 (although some airlines do have such a row).

An airplane manufacturer that I work with was developing a new airplane
a couple years ago, and gave it the designation "250".  But apparently
that number has a negative connotation in China, which is a growing
market for them, so before it was introduced they changed it to "280",
which I assume has a positive spin.

-- 
Cheers,
Van

"Half of what I say is meaningless..." - John Lennon
"Your job is to figure out which half." - Van Swofford
0
Van
9/7/2013 3:09:20 PM
On 9/7/13 3:24 PM, Rudy Velthuis (TeamB) wrote:
> Andreas Hausladen wrote:
>
>> Steve Thackery wrote:
>>
>>> but which Delphi is that?
>>
>> Delphi 8
>> Delphi 9 aka 2005
>> Delphi 10 aka 2006
>> Delphi 11 aka 2007
>> Delphi 12 aka 2009
>> Delphi 13 aka "we aren't superstitious but there is no 13th floor"
>> Delphi 14 aka 2010
>> Delphi 15 aka XE
>> Delphi 16 aka XE2
>> Delphi 17 aka XE3
>> Delphi 18 aka XE4
>> (Delphi 19 aka XE5)
>>
>> If they wouldn't have switched to year numbers and then XEx versioning
>> then "Delphi 12" would have been much more common like "Delphi 7" is.
>>
>> Then you have the compiler who's versioning started with TurboPascal,
>> so Delphi 1 had DCC 8.0 (VER80..VER250, CompilerVersion=8.0 .. 25.0)
>> There is even VER130/CompilerVersion=13.0 (Delphi 5), thus the person
>> in charge at that time wasn't superstitious.
>
> I'm not so sure it is the person in charge who has to be superstituous,
> just like hotel owners are not necessarily superstitious, but their
> cutsomers might be and may not buy a product with version 13 or book a
> hotel room on floor 13, or take place in an airplaine row 13 (although
> some airlines do have such a row).

How many customers do you know have an idea about the internal 
Delphi/VCL or the compiler version - especially before they are buying 
it (or even after it)? I could understand avoiding it in brand labels, 
but not in the inner technical details. Should we ban number 13 from the 
integer type as well, just in case? <g>

I actually remember Allen writing about this back then and it was rather 
an inside joke in the dev team. But I did not find it funny at all since 
it only meant more work for me...
0
Jouni
9/7/2013 3:46:11 PM
On 9/7/13 3:20 PM, Rudy Velthuis (TeamB) wrote:
> Rudy Velthuis (TeamB) wrote:
>
>> Jouni Aro wrote:
>>
>>>> It is version 8 of the current IDE:
>>>>
>>>>     C#Builder -> 1
>>>>     Delphi 8 -> 2
>>>>     Delphi 2005 -> 3
>>>>     Delphi 2006 -> 4
>>>>     Delphi 2007 -> 5
>>>>     Delphi 2009 -> 6
>>>>     Delphi 2010 -> 7
>>>>     Delphi XE -> 8
>>>>
>>>
>>> And in the registry, the key is
>>>
>>> Software/(Borland|CodeGear|Embarcadero)/BDS/<Version>.0
>>>
>>> So it's still Borland Developer Studio :)
>>
>> Yes, at least in the registry. <g>
>
> Oh, and the actual IDE executable is still called bds.exe.

Indeed.
0
Jouni
9/7/2013 3:46:41 PM
On 07.09.2013 17:46, Jouni Aro wrote:
>> ...
>> I'm not so sure it is the person in charge who has to be superstituous,
>> just like hotel owners are not necessarily superstitious, but their
>> cutsomers might be and may not buy a product with version 13 or book a
>> hotel room on floor 13, or take place in an airplaine row 13 (although
>> some airlines do have such a row).
>

Just make sure there never is a line 13 in any of your program or data 
files - and you'll be completely safe ...

-- 
Aage J.
0
Aage
9/7/2013 9:20:09 PM
Aage Johansen wrote:

>On 07.09.2013 17:46, Jouni Aro wrote:
>>> ...
>>> I'm not so sure it is the person in charge who has to be
>>>superstituous,  just like hotel owners are not necessarily
>>>superstitious, but their  cutsomers might be and may not buy a
>>>product with version 13 or book a  hotel room on floor 13, or
>>>take place in an airplaine row 13 (although  some airlines do
>>>have such a row).
>>
>
>Just make sure there never is a line 13 in any of your program or
>data files - and you'll be completely safe ...

He stop that! I life on dwelling number 13 

;)
0
Marius
9/8/2013 10:09:30 AM
On 9/8/13 12:20 AM, Aage Johansen wrote:
> On 07.09.2013 17:46, Jouni Aro wrote:
>>> ...
>>> I'm not so sure it is the person in charge who has to be superstituous,
>>> just like hotel owners are not necessarily superstitious, but their
>>> cutsomers might be and may not buy a product with version 13 or book a
>>> hotel room on floor 13, or take place in an airplaine row 13 (although
>>> some airlines do have such a row).
>>
>
> Just make sure there never is a line 13 in any of your program or data
> files - and you'll be completely safe ...

Best to not write any apps this year at all :)
0
Jouni
9/8/2013 3:22:22 PM
Reply: