E2032 For loop control variable must have ordinal type (Delphi)

From RAD Studio
Jump to: navigation, search

Go Up to Error and Warning Messages (Delphi)

The control variable of a for loop must have type Boolean, Char, WideChar, Integer, an enumerated type, or a subrange type.


program Produce;
var
  x: Real;
begin (*Plot sine wave*)
  for x := 0 to 2*pi/0.2 do                            (*<-- Error message here*)
    Writeln( '*': Round((Sin(x*0.2) + 1)*20) + 1 );
end.

The example uses a variable of type Real as the for loop control variable, which is illegal.


program Solve;
var
  x: Integer;
begin (*Plot sine wave*)
  for x := 0 to Round(2*pi/0.2) do
    Writeln( '*': Round((Sin(x*0.2) + 1)*20) + 1 );
end.

Instead, use the Integer ordinal type.

You may see this error if a FOR loop uses an Int64 or Variant control variable. This results from a limitation in the compiler which you can work around by replacing the FOR loop with a WHILE loop.