[fpc-pascal] evaluation of set constant

Jonas Maebe jonas.maebe at elis.ugent.be
Wed Dec 22 14:50:21 CET 2010

On 22 Dec 2010, at 14:15, Torsten Bonde Christiansen wrote:

> Is it possible to create a constant of a set that is based on an  
> evaluation of other constants? (using fpc 2.4.2)
> A basic case could look like this:
> type
>  TMyType = (a, b, c ,d);
>  TMyTypes = set of TMyTypes;
> const
>  SetX:        TMyTypes = (a, b);
>  SetY:        TMyTypes = (c, d);

These definitions should not compile, a set is defined as [a, b], not  
(a, b).

>  SetCombined: TMyTypes = SetX + SetY;   // this gives me an "Error:  
> Illegal expression"
> I have been reading throught the FPC docs, but it is unclear whether  
> this is possible at all. The set operators allow this and according  
> to FPC doc section on constants some expression evaluation is  
> possible.

So-called "typed constants" are actually initialised variables (for  
historical reasons). The compiler cannot evaluate expressions that  
involve variables (initialised or not).

Change the constants into symbol constants if you want to use them in  
constant expressions:

  SetX = [a, b];
  SetY = [c, d];
  SetCombined = SetX + SetY;


More information about the fpc-pascal mailing list