Marco van de Voort wrote 21 lines
> I use (*$IFDEF LCLGTK2 *) etc. in an "about" box, together with e.g.
> (*$I %FPCVERSION% *) and (*$I %DATE% *).
An ifdef is a different beast from a {$i }. Defines are set on the cmdline
(e.g. -dLCLGTK2 in the above case), while $I are
either built in (FPCVERSION, DATE, the easiest is to look up the
{$i %..%} syntax in the manual for a list)
_or_ an environmentvariable. This can be used to pass content like this, but
means that lazarus has to set them in the environment that FPC calls.
The advantage of this, is that it will work with any 2.x FPC version.
> Noting that somebody was asking about getting the LCL version a few days
> ago, where I've had to do this I tend to rely on having a fairly tight
> fit between FPC and LCL versions.
FPC doesn't know anything about LCL or Lazarus, let alone its exact
versioning. But it can regurgitate information it gets passed _by_ Lazarus.
Defines and {$I %environmentvariable%} are examples of this.
The point I was trying to make- which I didn't do very well- was that if something is usable in an ifdef if can be used to exclude code which is syntactically wrong for the current compiler, or references public properties which don't exist in the current LCL.
I don't think that you can do that if you're getting a value from lclversion or whatever, the decision has- in effect- to be made at a preprocessor level.
Going back to my original question, can I put something like this
-dprojectname=heavy_wethers
or even
-dprojectname=$ProjFile()
in the project settings, and then use it as
projectName:= {$I %projectname% } ;
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]