Delphi – E2054 Illegal type in Write/Writeln statement 

This error occurs when you try to write a type that isn’t permitted in a Write or Writeln statement in your delphi program.

program Produce;
type
  TColor = (red,green,blue);
var
  Color : TColor;
begin
  Writeln(Color);
end.

It would have been easier to use a writeln statement to output Color, wouldn’t it?

program Solve;
type
  TColor = (red,green,blue);
var
  Color : TColor;
const
  ColorString : array [TColor] of string = ('red', 'green', 'blue');
begin
  Writeln(ColorString[Color]);
end.

Unfortunately, that is not legal, and we have to do it with an auxiliary table.