Jump to content
alogrep

{$IFNDEF broken?

Recommended Posts

Hello.

I am stuck with this very strange behavious.

"Gelati" is not defineD anywhare in the App.

Now If i have this code, IFNDEF it is entirely "broken".

procedure clearalltables;
var i: integer;
{$IFNDEF GELATI}
  S: STRING;   // not work here
{$ENDIF}
begin
{$IFNDEF GELATI}
     with dm2, floorplantable do begin   //not work here
       cancelrange;
       filter:='sta..........

Then if I change the code like this

procedure clearalltables;
var i: integer;
{$IFDEF GELATI}
  S: STRING;  // DIMMED. ifdef WORKS
{$ENDIF}
begin
{$ifdef gelati}
     s:='???'; // DIMMED. ifdef WORKS
{$endif}
{$IFNDEF GELATI    //Ifndef is IGNORED???
     with dm2, floorplantable do begin
       cancelrange;
       filter:='status =''T'' or status=''S''';
       filtered:=true;

And hee even more incomprehensible

procedure clearalltables1;
var i: integer;
{$IFDEF GELATI}
  S: STRING;   // DIMMED
{$ENDIF}

begin
{$ifdef gelati}
     s:='???';  //DIMMED
{$eLSE}
{$IFNDEF GELATI}  //NEITHER {$ELSE} NOR {iFNDEF WORK ??????
     with dm2, floorplantable do begin
       cancelrange;
       filter:='status ...'
     end;
{$endif}
{$endif}
end;

 

Share this post


Link to post
38 minutes ago, alogrep said:

procedure clearalltables;

var i: integer;

{$IFDEF GELATI}

  S: STRING; // DIMMED. ifdef WORKS

{$ENDIF}

begin

{$ifdef gelati}

  s:='???'; // DIMMED. ifdef WORKS

{$endif}

{$IFNDEF GELATI //Ifndef is IGNORED???

  with dm2, floorplantable do begin

Perhaps this was a re-type error but that line with "{$IFNDEF GELATI" is missing the closing curly brace:

{$IFNDEF GELATI} // <-- need to close with }

Otherwise, it's dimming/not-dimming as I would expect.  If GELATI is not defined, then code in a "{$IFNDEF GELATI}" would execute and therefore not be dimmed--because {$IFNDEF} = if the symbol is NOT DEFINED.

Share this post


Link to post

If you think there's a bug, submit a bug report. What do you think we can do? 

 

And when you do, include a complete program in which you verify the defective behaviour. Obviously not your actual program. A minimal reproduction. 

 

Then you'll probably find out the real issue, which will likely be your expectations being incorrect. 

 

Edited by David Heffernan
  • Like 3

Share this post


Link to post
10 hours ago, alogrep said:

Hello.

I am stuck with this very strange behavious.

"Gelati" is not defineD anywhare in the App.

Now If i have this code, IFNDEF it is entirely "broken".


procedure clearalltables;
var i: integer;
{$IFNDEF GELATI}
  S: STRING;   // not work here
{$ENDIF}
begin
{$IFNDEF GELATI}
     with dm2, floorplantable do begin   //not work here
       cancelrange;
       filter:='sta..........

 

 

 

Remember that you can define such symbols not only with a $DEFINE statement but also in the project options, under Building -> Delphi compiler, "Conditional defines" on the right side. These are per-target options. Perhaps you defined GELATI there; it is the place to define symbols for all units compiled into the project, while a $DEFINE only works inside a unit, from the $DEFINE till the end of the unit or a matching $UNDEF.

Share this post


Link to post

Just try with GELATO to find out if its defined somewhere

 

Edited by Rollo62

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×