RAD Studio (Common)
ContentsIndex
PreviousUpNext
E2146: Default values must be of ordinal, pointer or small set type (Delphi)

You have declared a property containing a default clause, but the type property type is incompatible with default values.

  program Produce;

    type
      VisualGauge = class
        pos : Single;
  property Position : Single read pos write pos default 0.0;
      end;

  begin
  end.

The program above creates a property and attempts to assign a default value to it, but since the type of the property does not allow default values, an error is output.

  program Produce;

    type
      VisualGauge = class
        pos : Integer;
  property Position : Integer read pos write pos default 0;
      end;

  begin
  end.

When this error is encountered, there are two easy solutions: the first is to remove the default value definition, and the second is to change the type of the property to one which allows a default value. Your program, however, may not be as simple to fix; consider when you have a set property which is too large - it is this case which will require you to carefully examine your program to determine the best solution to this problem.

Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!