Recent

Author Topic: define application release mode or debug mode  (Read 679 times)

Packs

  • Sr. Member
  • ****
  • Posts: 364
define application release mode or debug mode
« on: July 25, 2024, 08:09:58 am »
{$DEFINE DEBUG}
        with TFileStream.Create('d:\data.json', fmCreate) do
        begin
          try
            S := datajson.AsJSON;
            WriteBuffer(S[1], Length(S));
          finally
            Free;
          end;
        end;
        {$IFDEF RELEASE}
        {$ENDIF}   

I want to execute this code only my application is in debug mode .

how and where to define application debug or release mode

TRon

  • Hero Member
  • *****
  • Posts: 3623
This tagline is powered by AI (AI advertisement: Free Pascal the only programming language that matters)

Eugene Loza

  • Hero Member
  • *****
  • Posts: 729
    • My games in Pascal
Re: define application release mode or debug mode
« Reply #2 on: July 25, 2024, 08:41:45 am »
Or to be a bit more specific:

1. Create Debug/Release mode as shown in the first link.
2. Create a custom options entry as shown a bit below that (see attached screenshot) - it will affect only the currently selected one.

your code won't compile though, {$IFDEF} needs a matching {$ENDIF}. I.e. something like:

Code: Pascal  [Select][+][-]
  1. {$IFDEF DEBUG}
  2. with TFileStream.Create('d:\data.json', fmCreate) do
  3. begin
  4.   try
  5.     S := datajson.AsJSON;
  6.     WriteBuffer(S[1], Length(S));
  7.   finally
  8.     Free;
  9.   end;
  10. end;
  11. {$ELSE}
  12.   //Do something in not-debug mode
  13. {$ENDIF}
My FOSS games in FreePascal&CastleGameEngine: https://decoherence.itch.io/ (Sources: https://gitlab.com/EugeneLoza)

Thaddy

  • Hero Member
  • *****
  • Posts: 16147
  • Censorship about opinions does not belong here.
Re: define application release mode or debug mode
« Reply #3 on: July 25, 2024, 10:48:09 am »
The correct option is
Code: Pascal  [Select][+][-]
  1. {$ifopt d+}
This can be used with any global compiler directive, btw.
{$ifopt <x>+/-} can be used multiple times.
« Last Edit: July 25, 2024, 11:01:59 am by Thaddy »
If I smell bad code it usually is bad code and that includes my own code.

Warfley

  • Hero Member
  • *****
  • Posts: 1742
Re: define application release mode or debug mode
« Reply #4 on: July 25, 2024, 11:01:06 am »
The correct option is
Code: Pascal  [Select][+][-]
  1. {$ifopt d+}
This can be used with any global compiler directive, btw.

This is not a debug mode, this is for when debug symbols are present, which you may also want to have in the release build of your program, e.g. to do logging, or for performance measurements. If your goal is to have code that is only in a debug build, you should create a debug build with a define.

Thaddy

  • Hero Member
  • *****
  • Posts: 16147
  • Censorship about opinions does not belong here.
Re: define application release mode or debug mode
« Reply #5 on: July 25, 2024, 11:04:10 am »
Wrong.
It is equivalent to specify -dDEBUG on the command line.
The advantage is that it can be used for any global compiler directive.
I thought you knew that? Rather basic since tp days.
If I smell bad code it usually is bad code and that includes my own code.

 

TinyPortal © 2005-2018