im working on application using delphi 7, and i just came across this
{$A+,B-,C+,D+,E-,F-,G+,H+,I+,J+,K-,L+,M-,N+,O-,P+,Q-,R-,S-,T-,U-,V+,W-,X+,Y+,Z1}
{$MINSTACKSIZE $00004000}
{$MAXSTACKSIZE $00100000}
{$IMAGEBASE $00400000}
{$APPTYPE GUI}
unit fmMain; // this is the main form of the project
interface
uses
//..all the code is here
end.
i know there are these Compiler Directive and Delphi Compiler Directives list
the author of the code has placed the so many compiler directives before the main unit name.
can any one tell me
- Whats the use of having Directives before unit name, does this make them global?
- And can we create our own directives in some particular situations?
- where are the compiler directives defined?
As to whether or not the directive has effect over the whole project, an entire unit, an single function and a region with a function, that varies from directive to directive. You have to read the documentation for each directive to know what its scope is.
You ask if they need to be placed right at the start of the unit. You need to take account of the scope of the directive. Another part of the documentation has this to say regarding switch directives:
However, consider the
DENYPACKAGEUNITdirective (emphasis mine):If this directive has unit-wide scope then it merely needs to be present in the unit to take effect.
So it can matter where the directive is placed. The bottom line is that, for each directive, you need to know its scope and in order to do so you must consult the documentation for that directive.
Note that you only need to set directives in code if you wish to change the settings from those made in the project settings. It’s perfectly reasonable to set the options in the project options and not set them in code.
What appears to have happened in the code you present is that the author typed CTRL+O O and the IDE inserted the various settings as defined in the project options at that instant in time.