E2264 Methoden-Auflösung ist für Interface '%s' nicht erlaubt (Delphi)
Nach oben zu Fehler- und Warnungsmeldungen (Delphi)
Es wurde versucht, eine Klausel zum Auflösen einer Methode für eine Schnittstelle zu verwenden, die in einer implements-Klausel angegeben ist.
program Produce; type I0 = interface procedure i0p0(a : char); end; T0 = class(TInterfacedObject, I0) procedure I0.i0p0 = proc0; function getter : I0; procedure proc0(a : char); property p0 : I0 read getter implements I0; end; procedure T0.proc0(a : char); begin end; function T0.getter : I0; begin end; end.
In diesem Beispiel wird die Methode proc0 auf die Schnittstellenprozedur i0p0 abgebildet, aber da die Schnittstelle in einer implements-Klausel angegeben wurde, ist die Umbenennung nicht zulässig.
program Solve; type I0 = interface procedure i0p0(a : char); end; T0 = class(TInterfacedObject, I0) function getter : I0; procedure i0p0(a : char); property p0 : I0 read getter implements I0; end; procedure T0.i0p0(a : char); begin end; function T0.getter : I0; begin end; end.
Die Lösung besteht darin, die Klausel zur "Namensauflösung" zu entfernen. Dies ist einfach möglich, indem Sie die Prozedur in der Klasse genauso benennen wie die Schnittstellenmethode.