E2147 La propriété '%s' n'existe pas dans la classe de base (Delphi)
Remonter à Messages d'erreur et d'avertissement (Delphi)
Le compilateur croit que vous essayez de remonter une propriété vers un niveau de visibilité différent dans une classe dérivée, mais la propriété spécifiée n'existe pas dans la classe de base.
program Produce; type Base = class private a: Integer; property BaseProp : integer read a write a; end; Derived = class (Base) ch : Char; property Alpha read ch write ch; (*cas 1*) property BesaProp; (*cas 2*) end; begin end.
Deux causes de base sont à l'origine de cette erreur. La première est la spécification d'une nouvelle propriété sans avoir spécifié de type, ceci n'est habituellement pas supposé être un mouvement vers un nouveau niveau de visibilité. La seconde est la spécification d'une propriété qui existe dans la classe de base mais qui n'est pas trouvée par le compilateur ; la cause la plus probable est une simple erreur typographique (comme dans "BesaProp"). Dans le deuxième cas, le compilateur émettra aussi des erreurs pour indiquer qu'une clause read ou write était attendue.
program Solve; type Base = class private a: Integer; property BaseProp : integer read a write a; end; Derived = class (Base) ch : Char; public property Alpha : Char read ch write ch; (*cas 1*) property BaseProp; (*cas 2*) end; begin end.
La solution du premier cas est de fournir le type de la propriété. La solution du deuxième cas est de vérifier l'orthographe du nom de la propriété.