E2096 Identificateur de méthode attendu (Object Pascal)

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Messages d'erreur et d'avertissement (Object Pascal) - Index

Ce message d'erreur sera émis dans plusieurs situations différentes :

  • Les propriétés d'une section automated doivent utiliser les méthodes d'accès, elles ne peuvent pas utiliser les champs dans leurs clauses read ou write.
  • Vous avez essayé d'appeler une méthode de classe avec la syntaxe "TypeClasse.NomMéthode", mais "NomMéthode" n'était pas un nom de méthode.
  • Vous avez essayé d'appeler une méthode héritée avec la syntaxe "Hérité NomMéthode", mais "NomMéthode" n'était pas un nom de méthode.


program Produce;

type
  TMyBase = class
    Field: Integer;
  end;
  TMyDerived = class (TMyBase)
    Field: Integer;
    function Get: Integer;
  Automated
    property Prop: Integer read Field;    (*<-- Message d'erreur ici*)
  end;

function TMyDerived.Get: Integer;
begin
  Result := TMyBase.Field;                (*<-- Message d'erreur ici*)
end;

begin
end.

L'exemple a essayé de déclarer une propriété automated accédant directement à un champ. La deuxième erreur a été provoquée en essayant d'obtenir un champ de la classe de base - ceci aussi est incorrect.


program Solve;

type
  TMyBase = class
    Field: Integer;
  end;
  TMyDerived = class (TMyBase)
    Field: Integer;
    function Get: Integer;
  Automated
    property Prop: Integer read Get;
  end;

function TMyDerived.Get: Integer;
begin
  Result := TMyBase(Self).Field;
end;

begin
  Writeln( TMyDerived.Create.Prop );
end.

Le premier problème est fixé en accédant au champ par une méthode. Le deuxième problème peut être fixé en transtypant le pointeur Self sur le type classe de base et en accédant au champ.