[fpc-pascal] Ordinal casting to enums

Hairy Pixels genericptr at gmail.com
Thu Jun 6 11:00:50 CEST 2024


oh, it's writeln which is doing the runtime check, thanks. Doing math on enums is probably not a smart idea though. I wonder why a subscript like [] was never added to enums. It would be nice to do:

f := Fruit[banana.index + 1];

instead of dealing with raw values. A runtime check for creating enums was ordinals would be smart also, like:

f := Fruit.Create(10);

instead of blindly cast ordinals to enums which may be invalid.

> On Jun 6, 2024, at 2:33 PM, Ondrej Pokorny <lazarus at kluug.net> wrote:
> 
> To find out, compile FPC with debug info and step into the writeln() call with F7 (multiple times until you get into fpc_shortstr_enum_intern()):
> 
> #0 FPC_SHORTSTR_ENUM_INTERN(4284424, 4284488, POINTER(nil), POINTER($00326000), , 12) at sstrings.inc:575
> #1 fpc_write_text_enum(POINTER($00416008), POINTER($00416048), 0, TEXT (), 12) at text.inc:1272
> #2 main at project1.lpr:16

Regards,
	Ryan Joseph



More information about the fpc-pascal mailing list