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.