RAD Studio (Common)
ContentsIndex
PreviousUpNext
E2183: Dispid clause only allowed in OLE automation section (Delphi)

A dispid has been given to a property which is not in an automated section.

program Produce;

  type
     Base = class
       v : integer;
       procedure setV(x : integer);
       function getV : integer;
       property Value : integer read getV write setV dispid 151;
     end;

  procedure Base.setV(x : integer);
  begin v := x;
  end;

  function Base.getV : integer;
  begin getV := v;
  end;

begin
end.

This program attempts to set the dispid for an OLE automation object, but the property has not been declared in an automated section.

program Solve;

  type
     Base = class
       v : integer;
       procedure setV(x : integer);
       function getV : integer;
     automated
       property Value : integer read getV write setV dispid 151;
     end;

  procedure Base.setV(x : integer);
  begin v := x;
  end;

  function Base.getV : integer;
  begin getV := v;
  end;

begin
end.

To solve the error, you can either remove the dispid clause from the property declaration, or move the property declaration into an automated section.

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