[fpc-pascal] evaluation of set constant
Torsten Bonde Christiansen
tc at epidata.dk
Thu Dec 23 10:14:30 CET 2010
On 2010-12-22 14:50, Jonas Maebe wrote:
>
> 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).
Sorry - that was my bad, i just made a typo in the previous email. It's
written with [] in my code.
>
>> 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:
>
> const
> SetX = [a, b];
> SetY = [c, d];
> SetCombined = SetX + SetY;
Ahh... great. I never thought of the difference between typed constants
and symbol constants. Now it works, Thank!
Kind regards,
Torsten Bonde Christiansen.
EpiData Association.
More information about the fpc-pascal
mailing list