Delphi Compiler Error
E2181 Redeclaration of property not allowed in OLE automation section
Reason for the Error & Solution
It is not allowed to move the visibility of a property into an automated section.
program Produce;
type
Base = class
v : Integer;
s : String;
protected
property Name : String read s write s;
property Value : Integer read v write v;
end;
Derived = class (Base)
public
property Name; (* Move Name to a public visibility by redeclaration *)
automated
property Value;
end;
begin
end.
In the above example, Name is moved from a private visibility in Base to public visibility in Derived by redeclaration. The same idea is attempted on Value, but an error results.
program Solve;
type
Base = class
v : Integer;
s : String;
protected
property Name : String read s write s;
property Value : Integer read v write v;
end;
Derived = class (Base)
public
property Name; (* Move Name to a public visibility by redeclaration *)
property Value;
automated
end;
begin
end.
It is not possible to change the visibility of a property to an automated section, therefore the solution to this problem is to not redeclare properties of base classes in automated sections.