When you try to read a variable that isn’t of a legal type in a Read or Readln, you’ll get this error in your delphi program.
Check the variable’s type and make sure you don’t have any dereferencing, indexing, or field selection operators missing.
program Produce; type TColor = (red,green,blue); var Color : TColor; begin Readln(Color); (*<-- Error message here*) end.
Variables of enumerated types cannot be read directly.
program Solve;
type
TColor = (red,green,blue);
var
Color : TColor;
InputString: string;
const
ColorString : array [TColor] of string = ('red', 'green', 'blue');
begin
Readln(InputString);
Color := red;
while (color < blue) and (ColorString[color] <> InputString) do
Inc(color);
end.Reading a string and looking it up in an auxiliary table is the solution. We didn’t bother with error checking in the previous example, so any string will be considered as ‘blue.’ In fact, we’d most likely display an error message and request that the user try again.
Leave a Reply