E2205 Type interface nécessaire (Delphi)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Messages d'erreur et d'avertissement (Delphi)

Un type qui est en réalité une interface était attendu mais n'a pas été trouvé. Une cause habituelle de cette erreur est la spécification d'un type défini par l'utilisateur qui n'a pas été déclaré comme type interface.


program Produce;
  type
    Name = string;

    MyObject = class
    end;

    MyInterface = interface(MyObject)
    end;

    Base = class(TObject, Name)
    end;

begin
end.

Dans cet exemple, le type 'Base' est déclaré d'une manière erronée puisque 'Name' est déclaré en type interface. De même, 'MyInterface' est mal déclaré car son interface ancêtre n'a pas été déclarée en tant que tel.


program Solve;
  type
    BaseInterface = interface
    end;

    MyInterface = interface(BaseInterface)
    end;

    Base = class(TObject, MyInterface)
    end;

begin
end.

La meilleur solution lorsque vous rencontrez cette erreur est de réexaminer le code source pour déterminer quelle était vraiment l'intention. Si une classe doit implémenter une interface, elle doit d'abord être explicitement dérivée d'un type de base tel que TObject. Lorsqu'elles sont étendues, les interfaces ne peuvent avoir qu'une interface simple comme ancêtre.

Dans cet exemple, l'interface est dérivée correctement d'une autre interface et la définition d'objet spécifie correctement une base afin que les interfaces puissent être définies.