Delphi Compiler Error
E2180 Dispid ‘%d’ already used by ‘%s’
Reason for the Error & Solution
An attempt to use a dispid which is already assigned to another member of this class.
program Produce;
type
Base = class
v : Integer;
procedure setV(x : Integer);
function getV : Integer;
automated
property Value : Integer read getV write setV dispid 151;
property SecondValue : 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.
Each automated property’s dispid must be unique, thus SecondValue is in error.
program Solve;
type
Base = class
v : Integer;
procedure setV(x : Integer);
function getV : Integer;
automated
property Value : Integer read getV write setV dispid 151;
property SecondValue : Integer read getV write setV dispid 152;
end;
procedure Base.setV(x : Integer);
begin v := x;
end;
function Base.getV : Integer;
begin getV := v;
end;
begin
end.
Giving a unique dispid to SecondValue will remove the error.