logobosswind
  • Home

Delphi Compiler Versions

Posted on 26.08.2019
logobosswind.netlify.com › Delphi Compiler Versions ▼ ▼
  1. Delphi Compiler Versions
  2. Delphi Compiler Discount

I was working on getting Log4D working in Delphi XE4, and was getting some compile errors because it couldn't find Contnrs in the uses clause, unless I moved it outside the ifdef it was defined in.

The Delphi compiler emits C++ headers, allowing C++ code to link to Delphi classes and methods as though they were written in C++. The reverse (C++ code being used by Delphi) is not as straightforward but possible.

A little bit of investigating uncovered that the ifdef is defined in an included file Defines.inc which has a block for each 'supported' version of delphi which stops a few versions back:

eg:

So while it would be easy enough to go ahead and copy and paste the ifdef for Delphi 2006 and create a Delphi XE4 block.. this seems like an inelegant solution. It's definitely not future proof..every new version you have to go update this file now so some code that wasn't present in Delphi 4 doesn't make someone else's 15+ year old legacy code explode.

So I was wondering if there's a better way to do conditional compilation such that it really does just check whether you have 'Delphi 5 or above' when compiling that line, rather than this format that requires updating every single new version of delphi that comes out.

This video and mp3 song of Chennai gana prabha thala song vivegam 2017 music video is published by Magizhchi Media on 29 Mar 2017. Gana praba jigina song 2017 chennai gana music video This video and mp3 song of Gana praba jigina song 2017 chennai gana music video is published by Sadhana Studio on 17 Nov 2017. We can not show all of the search results Gana Prabha Videos Mp3, because the APIs are limited in our search system, you can download Gana Prabha Videos Mp3 in first result, we does not host or save Gana Prabha Videos Mp3 file in our server. Gana Prabha Video Songs is popular Song Mp3 in 2019, We just show max 40 MP3 list about your search Gana Prabha Video Songs Mp3, because the APIs are limited in our search system, you can download Gana Prabha Video Songs Mp3 in first result, but you must remove a Gana Prabha Video Songs from the your computer after listening so you do not. Gana prabha songs download mp3.

Jessica BrownJessica Brown

4 Answers

IIRC, Delphi 6 introduced conditional expressions, which are actually what TLama suggested. To make your code work with Delphi versions below that, you have to check for {$IFDEF CONDITIONALEXPRESSIONS }. If this is not defined, you have to use the old VERxxx scheme to distinguish between the Delphi versions.

For Delphi 6 and higher you can use the built-in constants CompilerVersion and RTLVersion. Which of these you use depends on your code. Whenever you use a new compiler feature test for CompilerVersion. For anything related to the RTL or VCL test for RTLVersion.

It is always a good idea to code against the newest compiler and only use the conditional part for compatibility to older versions. So instead of writing {$IF CompilerVersion >= 26.0} write your code in a way that {$IF CompilerVersion < 26.0} is used. Thus in the future it is much easier to drop support for older compiler versions.

Uwe RaabeUwe Raabe

If I was a component vendor (TMS, DevEx) I might feel compelled to stick with the long, verbose syntax that EVERY delphi version ever supports. That's why that big mess is there in most component codebases.

Yet, for my own in-house components, I do not update with every version that comes out because my ver.inc file looks like this, and I do not support Delphi versions at all that do not support this newer syntax:

Nothing in the code above breaks when a new delphi version comes out. Note that I DO NOT have to support Delphi 5 through 2010 with my codebases. In fact, I only support XE2 and up.

A slightly longer version of the above form could be used to support every version from Delphi 6 and up, without any repeated blocks, and without breaking each time a new delphi version releases.

Also, see Uwe's answer for a technique where you can build one .inc file that supports EVERY version, and only use the old form for the old delphi versions.

Warren PWarren P

For the benefit of anyone coming to find this question in the future, I thought it might be worth documenting my final solution, since it took combining little bits from all the answers and comments to make it work, and it took finding me a few more examples to really understand how to use some of the suggestions above.

To handle the versions prior to Delphi 6 that don't support {$IF}, I left them as as-is. At most you'd have 5 of those, but in my case it was only 2:

And then for the versions that support {$IF} (Delphi 6+) I wrapped them in an {$IFDEF CONDITIONALEXPRESSIONS } block as suggested by Uwe. The Embarcadero documentation turned out to give a nice example of this, once I knew the right search terms.

That, combined with Warren's suggestion of using IF blocks on greater than or equal to the compiler version simplified things significantly:

Embarcadero has a helpful whole chart with all the versions of Delphi and their named constants, and customary Package Name. Between that and this stack overflow answer I was able to fill in all the compiler version constants.

Once I got this block in there, I didn't even need the the Delphi 2005/2006 blocks in my question at all and XE4 happily compiles away.

I liked Uwe's suggestion of coding for version X and below rather than Y and above when possible, even though I didn't end up using that suggestion immediately, since it would have been as much to rework the IFs and IFDEFs it would be to rip out the support for Delphi 3 in the first place ;-).

Community♦
Jessica BrownJessica Brown

The answer is simpler than I thought. From the documentation:

Delphi

For example, to determine the version of the compiler and run-time library that were used to compile your code, you can use {$IF} with the CompilerVersion, RTLVersion and other constants.

Delphi Compiler Versions

Here is the full code detecting Delphi versions from 6 to 10.3 (Rio):

The whole compiler version list you can find for example here.

Delphi Compiler Discount

Jacek KrawczykJacek Krawczyk

Not the answer you're looking for? Browse other questions tagged delphiconditional-compilation or ask your own question.

Post navigation

New Axxo Movies Download
Download Game Coc Hack Apk

Most Viewed Posts

  • Jay Z Reasonable Doubt Review
  • Vmware Vsphere Thick Client Download
  • Download Pcunlocker Free
  • Download Video Editor For Pc
  • Download Software For Epson Printer
  • Bakugan Final Episode
  • Website Download Film Subtitle Indonesia
  • Watch Da Vinci Code Movie
  • Bewafa Tu Song Download
  • Download Sony Vegas Pro 13 Free Full
  • Mini Vci J2534 64 Bit
  • Nagraj Comics In Hindi Only
  • Gana Sudhakar All Songs Download
  • Bakugan Battle Brawlers Season 2
  • Tafsir Al Azhar
  • Romeo Juliet Movie 2015
  • Download Fifa 18 Setup
  • Download Free Modded Games Pc
logobosswind- 2019