7

I found this directive declared in Controls.pas (and also in other units) and I'll be glad to know what does it mean.

{$C PRELOAD}

As far as I know $C means assertions control but what is the PRELOAD keyword ? Is it something like "assert me at preloading time" ?

I found this in Delphi 2009

Thank you

Martin Reiner
  • 2,167
  • 2
  • 20
  • 34

2 Answers2

7

The $C directive is called Code segment attribute and in conjuntion with the keywords MOVEABLE, FIXED, DEMANDLOAD, PRELOAD, DISCARDABLE, PERMANENT changues the attributes of a code segment.

{$C MOVEABLE DEMANDLOAD DISCARDABLE} // this is setting  Code Segment Attribute.

if you use the $C directive with a + or - you are using enabling or disabling the generation of code for assertions.

example :

{$C+}    { Assertions - On }
RRUZ
  • 134,889
  • 20
  • 356
  • 483
7

{$C+} and {$C-} are for assertions. {$C PRELOAD} is a carryover from 16-bit programming, where it preloaded the unit's code segment into memory immediately at runtime instead of waiting for the segment to be accessed first. That became unnecessary in Delphi 2 when 32-bit programming came around, so I don't know why the VCL source is still using it.

Remy Lebeau
  • 555,201
  • 31
  • 458
  • 770