Show: Object Pascal C++
Display Preferences

E2183 Dispid clause only allowed in OLE automation section (Object Pascal)

From Appmethod Topics
Jump to: navigation, search

Go Up to Error and Warning Messages (Object Pascal) Index

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.

Personal tools
In other languages